24f9a69022
Backend - Add ClipSubmission entity + table (runtime bootstrapper) and POST /api/public/clips (server-derives platform from the link) - Surface clip submissions in the admin season detail - Add DELETE candidate/category/clip endpoints with audit entries Frontend - Clips admin: real moderation view (list, open link, delete) instead of placeholder; wired clipSubmissions through types/api/store - Categories admin: add delete with confirm modal (matches Candidates) - Voting ranking bar uses the unified purple gradient - Fix ASCII transliterations to proper German umlauts across admin - Remove orphan AdminView 2.vue Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
88 lines
2.0 KiB
C#
88 lines
2.0 KiB
C#
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);
|
|
|
|
public sealed record CreateClipRequest(
|
|
int Year,
|
|
int? CategoryId,
|
|
string TwitchUserId,
|
|
string ClipUrl,
|
|
string Title,
|
|
string Creator);
|