public static void SetBoardSetting(string board_id, string board_name) { TableResult result = Warehouse.BoardListTable.Execute(TableOperation.Retrieve(board_id, EMPTY_ROW_KEY)); DynamicTableEntity entity = (DynamicTableEntity)result.Result; // if (entity != null) // let it throw null reference exception. int ec = RevisionStore.IncreaseEditCount(entity); string partition_key = SandId.CombineId(Warehouse.BoardListTable.Name, board_id); RevisionStore.CreateHistory(entity, partition_key, ec, "boardname"); CreatorConverter.FillEntity(entity, CreatorConverter.Status.Editor, null); entity["boardname"].StringValue = board_name; Warehouse.BoardListTable.Execute(TableOperation.Replace(entity)); // Throws StorageException ((412) Precondition Failed) if the entity is modified in between. //don't work for child action. //HttpResponse.RemoveOutputCacheItem("/boardlist"); //List<string> selection_list = SelectionBoardListResult.GetSelectionList(board_id); //if (selection_list != null) //foreach (string selection_id in selection_list) //don't work for child action. //HttpResponse.RemoveOutputCacheItem("/discussionlist/" + selection_id); Warehouse.BsMapPond.Notify(); Warehouse.DiscussionListPond.Notify(board_id); Warehouse.BoardSettingPond.Notify(board_id); }
public static void SetBoardFlags(string board_id, string delta_flags) { TableResult result = Warehouse.BoardListTable.Execute(TableOperation.Retrieve(board_id, EMPTY_ROW_KEY)); DynamicTableEntity entity = (DynamicTableEntity)result.Result; int ec = RevisionStore.IncreaseEditCount(entity); string partition_key = SandId.CombineId(Warehouse.BoardListTable.Name, board_id); RevisionStore.CreateHistory(entity, partition_key, ec, "flags2"); CreatorConverter.FillEntity(entity, CreatorConverter.Status.Editor, null); entity.OperateFlags(new FlagMergeOperation(delta_flags)); Warehouse.BoardListTable.Execute(TableOperation.Replace(entity)); // Throws StorageException ((412) Precondition Failed) if the entity is modified in between. Warehouse.BoardSettingPond.Notify(board_id); }