Refactor app architecture and clean local artifacts
This commit is contained in:
@@ -1,115 +0,0 @@
|
||||
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 AdminRiskFlagDto(
|
||||
int Id,
|
||||
string Source,
|
||||
string Type,
|
||||
string Severity,
|
||||
string Status,
|
||||
string Summary,
|
||||
string? TwitchUserId,
|
||||
string CreatedFromIp,
|
||||
DateTimeOffset CreatedAt,
|
||||
string MetadataJson);
|
||||
|
||||
public sealed record AdminAuditEntryDto(
|
||||
int Id,
|
||||
string AdminTwitchUserId,
|
||||
string ActionType,
|
||||
string EntityType,
|
||||
string EntityId,
|
||||
string Summary,
|
||||
DateTimeOffset CreatedAt);
|
||||
|
||||
public sealed record AdminDashboardResponse(
|
||||
IEnumerable<AdminMetricDto> Metrics,
|
||||
IEnumerable<AdminActivityDto> Activities,
|
||||
IEnumerable<AdminTopCategoryDto> TopCategories,
|
||||
IEnumerable<AdminRiskFlagDto> RiskFlags,
|
||||
IEnumerable<AdminAuditEntryDto> AuditEntries);
|
||||
|
||||
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 AdminClipSubmissionItemDto(
|
||||
int Id,
|
||||
int? CategoryId,
|
||||
string SubmittedByTwitchId,
|
||||
string ClipUrl,
|
||||
string Title,
|
||||
string Creator,
|
||||
string Platform,
|
||||
string Status,
|
||||
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,
|
||||
IEnumerable<AdminClipSubmissionItemDto> ClipSubmissions);
|
||||
|
||||
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);
|
||||
|
||||
public sealed record ResolveRiskFlagRequest(string Status);
|
||||
@@ -0,0 +1,14 @@
|
||||
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,
|
||||
IEnumerable<AdminRiskFlagDto> RiskFlags,
|
||||
IEnumerable<AdminAuditEntryDto> AuditEntries);
|
||||
@@ -0,0 +1,118 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
public sealed record AdminRiskFlagDto(
|
||||
int Id,
|
||||
string Source,
|
||||
string Type,
|
||||
string Severity,
|
||||
string Status,
|
||||
string Summary,
|
||||
string? TwitchUserId,
|
||||
string CreatedFromIp,
|
||||
DateTimeOffset CreatedAt,
|
||||
string MetadataJson,
|
||||
string? ReviewNote,
|
||||
string? ReviewedByTwitchId,
|
||||
DateTimeOffset? ReviewedAt,
|
||||
AdminRiskEntityLinkDto[] EntityLinks);
|
||||
|
||||
public sealed record AdminRiskEntityLinkDto(
|
||||
string Label,
|
||||
string EntityType,
|
||||
string EntityId,
|
||||
string To);
|
||||
|
||||
public sealed record AdminRiskCountDto(string Key, int Count);
|
||||
|
||||
public sealed record AdminRiskFlagsResponse(
|
||||
AdminRiskFlagDto[] Items,
|
||||
int TotalCount,
|
||||
int ReturnedCount,
|
||||
int Offset,
|
||||
int Limit,
|
||||
bool HasMore,
|
||||
AdminRiskCountDto[] SeverityCounts,
|
||||
AdminRiskCountDto[] StatusCounts);
|
||||
|
||||
public sealed record AdminAuditEntryDto(
|
||||
int Id,
|
||||
string AdminTwitchUserId,
|
||||
string ActionType,
|
||||
string EntityType,
|
||||
string EntityId,
|
||||
string Summary,
|
||||
DateTimeOffset CreatedAt,
|
||||
string MetadataJson,
|
||||
string CreatedFromIp,
|
||||
string UserAgent);
|
||||
|
||||
public sealed record AdminAuditEntriesResponse(
|
||||
AdminAuditEntryDto[] Items,
|
||||
int TotalCount,
|
||||
int ReturnedCount,
|
||||
string? NextCursor,
|
||||
int Limit);
|
||||
|
||||
public sealed record AdminNominationReviewItemDto(
|
||||
int Id,
|
||||
int CategoryId,
|
||||
string CategoryName,
|
||||
string SubmittedByTwitchId,
|
||||
string CandidateText,
|
||||
string? StreamUrl,
|
||||
string Status,
|
||||
DateTimeOffset CreatedAt,
|
||||
int? CandidateId,
|
||||
string? CandidateDisplayName,
|
||||
string? ReviewNote,
|
||||
string? ReviewedByTwitchId,
|
||||
DateTimeOffset? ReviewedAt);
|
||||
|
||||
public sealed record AdminClipSubmissionItemDto(
|
||||
int Id,
|
||||
int? CategoryId,
|
||||
int? CandidateId,
|
||||
string SubmittedByTwitchId,
|
||||
string ClipUrl,
|
||||
string Title,
|
||||
string Creator,
|
||||
string Platform,
|
||||
string Status,
|
||||
DateTimeOffset CreatedAt,
|
||||
string? ReviewNote,
|
||||
string? ReviewedByTwitchId,
|
||||
DateTimeOffset? ReviewedAt);
|
||||
|
||||
public sealed record ApproveNominationRequest(
|
||||
string? DisplayName,
|
||||
string? ChannelSlug,
|
||||
string? Platform,
|
||||
string? ReviewNote);
|
||||
|
||||
public sealed record RejectNominationRequest(string? ReviewNote);
|
||||
|
||||
public sealed record UpdateClipStatusRequest(
|
||||
string Status,
|
||||
string? ReviewNote);
|
||||
|
||||
public sealed record ResolveRiskFlagRequest(
|
||||
string Status,
|
||||
string? ReviewNote);
|
||||
|
||||
public sealed record BulkResolveRiskFlagsRequest(
|
||||
int[] RiskFlagIds,
|
||||
string Status,
|
||||
string? ReviewNote);
|
||||
|
||||
public sealed record AdminRiskRuleDto(
|
||||
string Key,
|
||||
string Label,
|
||||
bool Enabled,
|
||||
int Threshold,
|
||||
int WindowMinutes,
|
||||
string Severity,
|
||||
string Description);
|
||||
|
||||
public sealed record AdminRiskRulesResponse(AdminRiskRuleDto[] Rules);
|
||||
|
||||
public sealed record UpdateRiskRulesRequest(AdminRiskRuleDto[] Rules);
|
||||
@@ -0,0 +1,109 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
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 AdminAwardResultItemDto(
|
||||
int Id,
|
||||
int CategoryId,
|
||||
string CategoryName,
|
||||
int CandidateId,
|
||||
string CandidateDisplayName,
|
||||
string CandidateChannelSlug,
|
||||
string CandidatePlatform);
|
||||
|
||||
public sealed record AdminSeasonDetailResponse(
|
||||
int Id,
|
||||
int Year,
|
||||
string Name,
|
||||
string ShowStreamUrl,
|
||||
string CurrentPhase,
|
||||
bool IsCurrent,
|
||||
bool IsCommunityOnly,
|
||||
DateOnly NominationStartsAt,
|
||||
DateOnly NominationEndsAt,
|
||||
DateOnly VotingStartsAt,
|
||||
DateOnly VotingEndsAt,
|
||||
DateOnly ReviewStartsAt,
|
||||
DateOnly ReviewEndsAt,
|
||||
DateOnly ShowDate,
|
||||
TimeOnly ShowStartsAt,
|
||||
IEnumerable<AdminCategoryItemDto> Categories,
|
||||
IEnumerable<AdminCandidateItemDto> Candidates,
|
||||
IEnumerable<AdminNominationReviewItemDto> PendingNominations,
|
||||
IEnumerable<AdminNominationReviewItemDto> ReviewedNominations,
|
||||
IEnumerable<AdminAwardResultItemDto> Results,
|
||||
IEnumerable<AdminClipSubmissionItemDto> ClipSubmissions);
|
||||
|
||||
public sealed record CreateSeasonRequest(
|
||||
int Year,
|
||||
string Name,
|
||||
string ShowStreamUrl,
|
||||
string CurrentPhase,
|
||||
bool IsCurrent,
|
||||
bool IsCommunityOnly,
|
||||
DateOnly NominationStartsAt,
|
||||
DateOnly NominationEndsAt,
|
||||
DateOnly VotingStartsAt,
|
||||
DateOnly VotingEndsAt,
|
||||
DateOnly ReviewStartsAt,
|
||||
DateOnly ReviewEndsAt,
|
||||
DateOnly ShowDate,
|
||||
TimeOnly ShowStartsAt,
|
||||
int? CopyStructureFromSeasonId = null);
|
||||
|
||||
public sealed record UpdateSeasonRequest(
|
||||
int Year,
|
||||
string Name,
|
||||
string ShowStreamUrl,
|
||||
string CurrentPhase,
|
||||
bool IsCurrent,
|
||||
bool IsCommunityOnly,
|
||||
DateOnly NominationStartsAt,
|
||||
DateOnly NominationEndsAt,
|
||||
DateOnly VotingStartsAt,
|
||||
DateOnly VotingEndsAt,
|
||||
DateOnly ReviewStartsAt,
|
||||
DateOnly ReviewEndsAt,
|
||||
DateOnly ShowDate,
|
||||
TimeOnly ShowStartsAt);
|
||||
|
||||
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 SetAwardResultRequest(
|
||||
int CategoryId,
|
||||
int CandidateId);
|
||||
@@ -0,0 +1,48 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
public sealed record AdminSiteSettingsResponse(
|
||||
string HostDisplayName,
|
||||
string HostTagline,
|
||||
string NewsletterUrl,
|
||||
string PrivacyEmail,
|
||||
string PrivacyPolicyContent,
|
||||
string? PrivacyPolicyUpdatedBy,
|
||||
DateTimeOffset? PrivacyPolicyUpdatedAt,
|
||||
string ImprintUrl,
|
||||
string ContactUrl,
|
||||
string SponsorsUrl,
|
||||
IEnumerable<PublicSocialLinkDto> SocialLinks,
|
||||
IEnumerable<FaqItemDto> Faq);
|
||||
|
||||
public sealed record UpdateSiteSettingsRequest(
|
||||
string HostDisplayName,
|
||||
string HostTagline,
|
||||
string NewsletterUrl,
|
||||
string PrivacyEmail,
|
||||
string PrivacyPolicyContent,
|
||||
string ImprintUrl,
|
||||
string ContactUrl,
|
||||
string SponsorsUrl,
|
||||
PublicSocialLinkDto[] SocialLinks,
|
||||
FaqItemDto[] Faq);
|
||||
|
||||
public sealed record AdminOperationalSettingsResponse(
|
||||
bool DemoLoginManagedByDatabase,
|
||||
bool DemoLoginEnabled,
|
||||
string DemoLoginEmail,
|
||||
bool DemoLoginPasswordSet,
|
||||
string DemoLoginTwitchUserId,
|
||||
string DemoLoginDisplayName,
|
||||
bool MaintenanceModeEnabled,
|
||||
string MaintenanceTitle,
|
||||
string MaintenanceMessage);
|
||||
|
||||
public sealed record UpdateOperationalSettingsRequest(
|
||||
bool DemoLoginEnabled,
|
||||
string DemoLoginEmail,
|
||||
string? DemoLoginPassword,
|
||||
string DemoLoginTwitchUserId,
|
||||
string DemoLoginDisplayName,
|
||||
bool MaintenanceModeEnabled,
|
||||
string MaintenanceTitle,
|
||||
string MaintenanceMessage);
|
||||
@@ -5,6 +5,11 @@ public sealed record LoginRequest(
|
||||
string DisplayName,
|
||||
string Role);
|
||||
|
||||
public sealed record DemoLoginRequest(
|
||||
string? Login,
|
||||
string? Email,
|
||||
string? Password);
|
||||
|
||||
public sealed record AuthSessionDto(
|
||||
string SessionToken,
|
||||
string TwitchUserId,
|
||||
|
||||
@@ -1,87 +0,0 @@
|
||||
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);
|
||||
@@ -0,0 +1,68 @@
|
||||
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,
|
||||
string WinnerPlatform,
|
||||
string WinnerUrl);
|
||||
|
||||
public sealed record FaqItemDto(string Question, string Answer);
|
||||
|
||||
public sealed record PublicSocialLinkDto(
|
||||
string Label,
|
||||
string Platform,
|
||||
string Url,
|
||||
string? Icon = null,
|
||||
bool ShowOnHost = true,
|
||||
bool ShowOnCommunity = true);
|
||||
|
||||
public sealed record FooterLinkDto(
|
||||
string Label,
|
||||
string Url);
|
||||
|
||||
public sealed record PublicSiteContentDto(
|
||||
string HostDisplayName,
|
||||
string HostTagline,
|
||||
string NewsletterUrl,
|
||||
string PrivacyEmail,
|
||||
string PrivacyPolicyContent,
|
||||
IEnumerable<PublicSocialLinkDto> SocialLinks,
|
||||
IEnumerable<FooterLinkDto> FooterLinks);
|
||||
|
||||
public sealed record PublicSiteStatusResponse(
|
||||
bool DemoLoginEnabled,
|
||||
bool MaintenanceModeEnabled,
|
||||
string MaintenanceTitle,
|
||||
string MaintenanceMessage);
|
||||
|
||||
public sealed record OverviewResponse(
|
||||
int SeasonId,
|
||||
int Year,
|
||||
string Title,
|
||||
DateOnly ShowDate,
|
||||
TimeOnly ShowStartsAt,
|
||||
string ShowStreamUrl,
|
||||
string CurrentPhase,
|
||||
bool IsCommunityOnly,
|
||||
string LoginProvider,
|
||||
IEnumerable<TimelineItem> Timeline,
|
||||
IEnumerable<FeaturedCategoryDto> FeaturedCategories,
|
||||
IEnumerable<WinnerPreviewDto> WinnersPreview,
|
||||
PublicSiteContentDto SiteContent,
|
||||
IEnumerable<FaqItemDto> Faq);
|
||||
@@ -0,0 +1,23 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
public sealed record CandidateSummaryDto(
|
||||
int Id,
|
||||
string DisplayName,
|
||||
string ChannelSlug,
|
||||
string Platform,
|
||||
string? ClipUrl,
|
||||
string? ClipTitle,
|
||||
string? ClipPlatform);
|
||||
|
||||
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);
|
||||
@@ -0,0 +1,28 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
public sealed record UserNominationStateDto(
|
||||
int CategoryId,
|
||||
string[] Nominees);
|
||||
|
||||
public sealed record UserVoteStateDto(
|
||||
int CategoryId,
|
||||
int CandidateId);
|
||||
|
||||
public sealed record UserClipSubmissionStateDto(
|
||||
int Id,
|
||||
int? CategoryId,
|
||||
string ClipUrl,
|
||||
string Title,
|
||||
string Creator,
|
||||
string Platform,
|
||||
string Status,
|
||||
DateTimeOffset CreatedAt,
|
||||
string? ReviewNote,
|
||||
DateTimeOffset? ReviewedAt);
|
||||
|
||||
public sealed record UserParticipationResponse(
|
||||
int SeasonId,
|
||||
int Year,
|
||||
UserNominationStateDto[] Nominations,
|
||||
UserVoteStateDto[] Votes,
|
||||
UserClipSubmissionStateDto[] ClipSubmissions);
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
public sealed record WinnerArchiveItemDto(
|
||||
string Category,
|
||||
string WinnerName,
|
||||
string WinnerSlug,
|
||||
string WinnerPlatform,
|
||||
string WinnerUrl);
|
||||
|
||||
public sealed record WinnerArchiveResponse(
|
||||
int Year,
|
||||
IEnumerable<WinnerArchiveItemDto> Items);
|
||||
@@ -0,0 +1,30 @@
|
||||
namespace Backend.Contracts;
|
||||
|
||||
public sealed record NominationEntryRequest(
|
||||
string Name,
|
||||
string StreamUrl);
|
||||
|
||||
public sealed record CreateNominationRequest(
|
||||
int Year,
|
||||
int CategoryId,
|
||||
string TwitchUserId,
|
||||
string[]? Nominees,
|
||||
NominationEntryRequest[]? Nominations);
|
||||
|
||||
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,
|
||||
int? CandidateId,
|
||||
string TwitchUserId,
|
||||
string ClipUrl,
|
||||
string Title,
|
||||
string Creator);
|
||||
Reference in New Issue
Block a user