Scale unique answer tracking

This commit is contained in:
hz
2026-07-13 02:11:54 -05:00
parent 700da4e415
commit f2c59388eb
23 changed files with 1064 additions and 131 deletions
@@ -0,0 +1,49 @@
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;
}