using Newtonsoft.Json; using ServerCore; using ServerBase; namespace ServerCommon; public class RoomAttrib : AttribBase { [JsonProperty("room_id")] public int RoomId { get; set; } [JsonProperty("owner")] public string Owner { get; set; } = string.Empty; [JsonProperty("name")] public string Name { get; set; } = string.Empty; [JsonProperty("description")] public string Description { get; set; } = string.Empty; [JsonProperty("prop_info")] public Dictionary PropInfo = new(); public RoomAttrib() : base(typeof(RoomAttrib).Name) { } } //============================================================================================= // PK(Partition Key) : "room#owner_guid" // SK(Sort Key) : "room_id" // DocType : IndividualRoomDoc // RoomAttrib : {} // ... //============================================================================================= public class RoomDoc : DynamoDbDocBase { public RoomDoc() : base(nameof(RoomDoc)) { } public RoomDoc(string owner_guid, int room_id) : base(nameof(RoomDoc)) { onInit(owner_guid, room_id); } public void onInit(string owner_guid, int room_id) { setCombinationKeyForPK(owner_guid); setCombinationKeyForSK(room_id.ToString()); appendAttribWrapperAll(); fillUpPrimaryKey(onMakePK(), onMakeSK()); } private void appendAttribWrapperAll() { appendAttribWrapper(new AttribWrapper()); } protected override string onGetPrefixOfPK() { return "room#"; } protected override ServerErrorCode onCheckAndSetSK(string sortKey) { getPrimaryKey().fillUpSK(sortKey); setCombinationKeyForSK(sortKey); return ServerErrorCode.Success; } }