using System; using Newtonsoft.Json; using ServerCore; using ServerBase; namespace ServerCommon; public class ClaimAttrib : AttribBase { [JsonProperty("claim_type")] public MetaAssets.ClaimType ClaimType { get; set; } = MetaAssets.ClaimType.None; [JsonProperty("claim_id")] public int ClaimId { get; set; } = 0; [JsonProperty("active_reward_idx")] public int ActiveRewardIdx { get; set; } = 0; [JsonProperty("active_time")] public DateTime ActiveTime { get; set; } = new(); [JsonProperty("create_time")] public DateTime CreateTime { get; set; } = new(); [JsonProperty("complete_time")] public DateTime CompleteTime { get; set; } = new(); [JsonProperty("is_complete")] public int IsComplete { get; set; } = 0; public ClaimAttrib() : base(typeof(ClaimAttrib).Name) { } } //============================================================================================= // PK(Partition Key) : "claim#owner_guid" // SK(Sort Key) : "normal#claim_meta_id" // DocType : ClaimDoc // ClaimAttrib : {} // ... //============================================================================================= public class ClaimDoc : DynamoDbDocBase { public ClaimDoc() : base(typeof(ClaimDoc).Name) { appendAttribWrapper(new AttribWrapper()); } public ClaimDoc(string userGuid) : base(typeof(ClaimDoc).Name) { appendAttribWrapper(new AttribWrapper()); setCombinationKeyForPK(userGuid); } public ClaimDoc(string userGuid, MetaAssets.ClaimType type, Int32 claimId) : base(typeof(ClaimDoc).Name) { appendAttribWrapper(new AttribWrapper()); var attrib = getAttrib(); NullReferenceCheckHelper.throwIfNull(attrib, () => $"attrib is null !!!"); attrib.ClaimType = type; setCombinationKeyForPK(userGuid); setCombinationKeyForSK(claimId.ToString()); fillUpPrimaryKey(onMakePK(), onMakeSK()); } protected override string onGetPrefixOfPK() { return "claim#"; } protected override string onGetPrefixOfSK() { var attrib = getAttrib(); NullReferenceCheckHelper.throwIfNull(attrib, () => $"attrib is null !!!"); return $"{attrib.ClaimType.ToString().ToLower()}#"; } protected override string onMakePK() { return $"{onGetPrefixOfPK()}{getCombinationKeyForPK()}"; } protected override string onMakeSK() { return $"{onGetPrefixOfSK()}{getCombinationKeyForSK()}"; } protected override ServerErrorCode onCheckAndSetPK(string pk) { getPrimaryKey().fillUpPK(pk); return ServerErrorCode.Success; } protected override ServerErrorCode onCheckAndSetSK(string sortKey) { getPrimaryKey().fillUpSK(sortKey); return ServerErrorCode.Success; } }