50 lines
1.3 KiB
C#
50 lines
1.3 KiB
C#
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;
|
|
}
|