private static string /*letter id*/ CreateLetterInternal(string board_id, string discussion_id, string creator, string words, Subtype subtype, string delta_flags) { string partition_key = SandId.CombineId(board_id, discussion_id); if (NextIdStore.GetLastId(Warehouse.DiscussionLoadTable, partition_key) >= HeartsConfiguration.MAX_NUM_OF_LETTERS_IN_A_DISCUSSION) { Util.ThrowBadRequestException("留言數超過上限(" + HeartsConfiguration.MAX_NUM_OF_LETTERS_IN_A_DISCUSSION + ")則。"); } int next_id = NextIdStore.Next(Warehouse.DiscussionLoadTable, partition_key); // null reference exception for nonexistent board id. string letter_id = SandId.MakeLetterId(next_id); // if exception is thrown after getting id, the id is lost. DynamicTableEntity entity = new DynamicTableEntity(partition_key, letter_id); LetterConverter.CreateLetterEntity(entity, creator, words, subtype, delta_flags, board_id, discussion_id); // Warehouse.DiscussionLoadPond.Get(board_id, discussion_id).AddLetter(entity); Warehouse.DiscussionSummaryPond.Get(board_id, discussion_id).AddLetter(entity); Warehouse.DiscussionLoadTable.Execute(TableOperation.Insert(entity)); // return(letter_id); }
public static void GetLastLetters(string board_id, string discussion_id, int cnt, Action <DynamicTableEntity> act) { string partition_key = SandId.CombineId(board_id, discussion_id); int last_id = NextIdStore.GetLastId(Warehouse.DiscussionLoadTable, partition_key); if (last_id != -1) { Warehouse.DiscussionLoadTable.EnumerateRowRange(partition_key, SandId.LETTER_ID_PREFIX, last_id - cnt + 1, cnt, act); } }
public static void GetLastDiscussions(string board_id, int cnt, Action <DynamicTableEntity> act) { string partition_key = board_id; int last_id = NextIdStore.GetLastId(Warehouse.DiscussionListTable, partition_key); if (last_id != -1) { Warehouse.DiscussionListTable.EnumerateRowRange(partition_key, SandId.DISCUSSION_ID_PREFIX, last_id - cnt + 1, cnt, act); } }