Initial VTuber Awards implementation

This commit is contained in:
AzuTear
2026-06-17 11:35:45 +02:00
commit 670259a983
74 changed files with 15797 additions and 0 deletions
+78
View File
@@ -0,0 +1,78 @@
namespace Backend.Contracts;
public sealed record AdminMetricDto(string Label, int Value, string Note);
public sealed record AdminActivityDto(string Label, string Age);
public sealed record AdminTopCategoryDto(string Category, int Votes);
public sealed record AdminDashboardResponse(
IEnumerable<AdminMetricDto> Metrics,
IEnumerable<AdminActivityDto> Activities,
IEnumerable<AdminTopCategoryDto> TopCategories);
public sealed record AdminSeasonListItemDto(
int Id,
int Year,
string Name,
string CurrentPhase,
bool IsCurrent,
int CategoryCount);
public sealed record AdminCategoryItemDto(
int Id,
string GroupName,
string Name,
string Slug,
string Description,
int SortOrder,
int MaxNomineesPerUser,
int CandidateCount);
public sealed record AdminCandidateItemDto(
int Id,
int CategoryId,
string DisplayName,
string ChannelSlug,
string Platform);
public sealed record AdminNominationReviewItemDto(
int Id,
int CategoryId,
string CategoryName,
string SubmittedByTwitchId,
string CandidateText,
DateTimeOffset CreatedAt);
public sealed record AdminSeasonDetailResponse(
int Id,
int Year,
string Name,
string CurrentPhase,
bool IsCurrent,
IEnumerable<AdminCategoryItemDto> Categories,
IEnumerable<AdminCandidateItemDto> Candidates,
IEnumerable<AdminNominationReviewItemDto> PendingNominations);
public sealed record UpdateSeasonRequest(
string CurrentPhase,
bool IsCurrent);
public sealed record UpsertCategoryRequest(
string GroupName,
string Name,
string Slug,
string Description,
int SortOrder,
int MaxNomineesPerUser);
public sealed record UpsertCandidateRequest(
int CategoryId,
string DisplayName,
string ChannelSlug,
string Platform);
public sealed record ApproveNominationRequest(
string? DisplayName,
string? ChannelSlug,
string? Platform);
+12
View File
@@ -0,0 +1,12 @@
namespace Backend.Contracts;
public sealed record LoginRequest(
string TwitchUserId,
string DisplayName,
string Role);
public sealed record AuthSessionDto(
string SessionToken,
string TwitchUserId,
string DisplayName,
string Role);
+79
View File
@@ -0,0 +1,79 @@
namespace Backend.Contracts;
public sealed record TimelineItem(
string Key,
string Title,
DateOnly StartsAt,
DateOnly EndsAt,
string State);
public sealed record FeaturedCategoryDto(
int Id,
string GroupName,
string Name,
string Description,
int MaxNomineesPerUser);
public sealed record WinnerPreviewDto(
int Year,
string Category,
string WinnerName,
string WinnerSlug);
public sealed record FaqItemDto(string Question, string Answer);
public sealed record OverviewResponse(
int SeasonId,
int Year,
string Title,
DateOnly ShowDate,
string CurrentPhase,
bool IsCommunityOnly,
string LoginProvider,
IEnumerable<TimelineItem> Timeline,
IEnumerable<FeaturedCategoryDto> FeaturedCategories,
IEnumerable<WinnerPreviewDto> WinnersPreview,
IEnumerable<FaqItemDto> Faq);
public sealed record CandidateSummaryDto(
int Id,
string DisplayName,
string ChannelSlug,
string Platform);
public sealed record PublicCategoryDetailDto(
int Id,
string Name,
string GroupName,
string Description,
int MaxNomineesPerUser,
IEnumerable<CandidateSummaryDto> Candidates);
public sealed record SeasonCategoriesResponse(
int SeasonId,
int Year,
IEnumerable<PublicCategoryDetailDto> Categories);
public sealed record WinnerArchiveItemDto(
string Category,
string WinnerName,
string WinnerSlug);
public sealed record WinnerArchiveResponse(
int Year,
IEnumerable<WinnerArchiveItemDto> Items);
public sealed record CreateNominationRequest(
int Year,
int CategoryId,
string TwitchUserId,
string[] Nominees);
public sealed record VoteEntryRequest(
int CategoryId,
int CandidateId);
public sealed record CreateVoteRequest(
int SeasonId,
string TwitchUserId,
VoteEntryRequest[] Entries);