feat(backend): add problem/need submission module with workflow and events

Add submission CRUD with pagination and role scoping, challenge/location binding, automatic keyword extraction, a validated status workflow, and domain events for matchmaking and notifications. Create a problem record together with each submission.
This commit is contained in:
Rafał Tyński
2026-10-04 02:22:00 +02:00
parent 58cc2e4096
commit cadc321d96
12 changed files with 633 additions and 0 deletions
@@ -34,3 +34,33 @@ internal sealed class ConsentRow
[CborProperty("revoked_at")] public DateTimeOffset? RevokedAt { get; set; }
}
internal sealed class SubmissionRow
{
[CborProperty("id")] public string Id { get; set; } = string.Empty;
[CborProperty("problem")] public string Problem { get; set; } = string.Empty;
[CborProperty("status")] public string Status { get; set; } = string.Empty;
[CborProperty("keywords")] public List<string> Keywords { get; set; } = [];
[CborProperty("created_at")] public DateTimeOffset CreatedAt { get; set; }
[CborProperty("updated_at")] public DateTimeOffset? UpdatedAt { get; set; }
[CborProperty("title")] public string Title { get; set; } = string.Empty;
[CborProperty("description")] public string Description { get; set; } = string.Empty;
[CborProperty("challenge")] public string Challenge { get; set; } = string.Empty;
[CborProperty("location")] public string Location { get; set; } = string.Empty;
[CborProperty("author")] public string Author { get; set; } = string.Empty;
}
internal sealed class CountRow
{
[CborProperty("count")] public int Count { get; set; }
}