using System.ComponentModel.DataAnnotations; namespace DorkNet.Server.Data.Entities; /// /// Per-player objective / achievement progress. The 2020 client's /// Objectives.MyProgress response is two arrays — Objectives /// and ObjectiveGroups — keyed by string id. We collapse that to one /// table here; group rows distinguish themselves with a leading /// group: prefix on . /// public class ObjectiveProgressEntity { public long Id { get; set; } public long PlayerId { get; set; } /// Objective id from the client's hardcoded objective /// table (e.g. tutorial_dorm_decorate). Group rows use /// group:<groupId>. [MaxLength(128)] public string Key { get; set; } = string.Empty; public bool IsCompleted { get; set; } public DateTime? ClearedAt { get; set; } }