using MongoDB.Bson.Serialization.Attributes; namespace QuestionsApi.Models; public sealed class QuestionAttemptCounter { public string QuestionExternalId { get; set; } = ""; public int Bucket { get; set; } public string ChoiceId { get; set; } = ""; public long Count { get; set; } public DateTime UpdatedUtc { get; set; } = DateTime.UtcNow; } public sealed class QuestionAttemptCounterTotal { [BsonId] public QuestionChoiceCounterKey Key { get; set; } = new(); public long Count { get; set; } } public sealed class QuestionAttemptCounterAggregate { [BsonId] public QuestionChoiceBucketKey Key { get; set; } = new(); public long Count { get; set; } } public sealed class QuestionChoiceBucketKey { public string QuestionExternalId { get; set; } = ""; public int Bucket { get; set; } public string ChoiceId { get; set; } = ""; } public sealed class QuestionChoiceCounterKey { public string QuestionExternalId { get; set; } = ""; public string ChoiceId { get; set; } = ""; } public sealed class AnswerStatisticsState { [BsonId] public string Id { get; set; } = "answer-statistics-v1"; public bool Completed { get; set; } public string LeaseOwner { get; set; } = ""; public DateTime LeaseUntilUtc { get; set; } public DateTime UpdatedUtc { get; set; } = DateTime.UtcNow; }