Files
vtuber-awards/Backend/Migrations/20260629142744_SeedApplicationDefaults.cs
AzuTear 441ef2b850
CI - Build & Verify / Build, Typecheck & Hygiene (push) Successful in 59s
CI - Build & Verify / Deploy to award.noveria.net (push) Failing after 53s
Update release notes and deploy workspace
2026-06-29 17:49:54 +02:00

169 lines
7.2 KiB
C#

using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Backend.Migrations;
public partial class SeedApplicationDefaults : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(
"""
INSERT INTO "SiteSettings" (
"Id",
"HostDisplayName",
"HostTagline",
"NewsletterUrl",
"ShareXUrl",
"ShareDiscordUrl",
"PrivacyEmail",
"PrivacyPolicyContent",
"ImprintUrl",
"ImprintContent",
"ContactUrl",
"ContactContent",
"SponsorsUrl",
"SponsorsContent",
"ShowactsUrl",
"ShowactsContent",
"StreamBannerEyebrow",
"StreamBannerTitle",
"StreamBannerText",
"StreamBannerLiveButtonLabel",
"StreamBannerLiveButtonUrl",
"StreamBannerLockedButtonLabel",
"StreamBannerUseCompletedContent",
"StreamBannerCompletedEyebrow",
"StreamBannerCompletedTitle",
"StreamBannerCompletedText",
"StreamBannerCompletedButtonLabel",
"StreamBannerCompletedButtonUrl",
"AwardsSectionTitle",
"AwardsSectionDescription",
"SubcategoriesSectionTitle",
"SubcategoriesSectionDescription",
"SocialLinksJson",
"FaqJson",
"RiskRulesJson",
"WorkflowRulesJson",
"TrackingRulesJson",
"ViewerStatsProviderBaseUrl",
"TrackingReviewNotes",
"NominationLinkBlacklistJson",
"ClipSubmissionsEnabled",
"ClipReviewEnabled",
"ClipAdminMenuVisible",
"ClipSubmissionDisabledMessage",
"ShowactApplicationsEnabled",
"ShowactApplicationStartsAt",
"ShowactApplicationEndsAt",
"ShowactApplicationDisabledMessage",
"ShowactFormSchemaJson",
"SponsorsVisible",
"DemoLoginManagedByDatabase",
"DemoLoginEnabled",
"DemoLoginEmail",
"DemoLoginPasswordHash",
"DemoLoginPasswordSalt",
"DemoLoginTwitchUserId",
"DemoLoginDisplayName",
"TwitchAuthManagedByDatabase",
"TwitchClientId",
"TwitchClientSecret",
"TwitchRedirectUri",
"TwitchScope",
"SessionIdleTimeoutHours",
"MaintenanceModeEnabled",
"MaintenanceTitle",
"MaintenanceMessage"
)
VALUES (
1,
'Jayuhime',
'VTuber Star Awards',
'',
'https://x.com/intent/tweet',
'https://discord.gg/',
'privacy@example.invalid',
'Diese lokale Baseline enthaelt nur nicht-geheime Platzhalter. Pflege produktive Datenschutztexte vor dem Go-live im Admin-Panel.',
'/impressum',
'Impressumsdaten werden vor dem Go-live im Admin-Panel gepflegt.',
'/kontakt',
'Fragen zu den Awards und Partnerschaften koennen ueber die offiziellen Kontaktkanaele gestellt werden.',
'/sponsoren',
'Partner und Sponsoren der aktuellen Award-Season.',
'/showacts',
'Showact-Bewerbungen fuer das Finale werden hier verwaltet.',
'Finale live',
'Die Award-Show startet im Livestream',
'Wenn das Finale freigeschaltet ist, fuehrt dieser Button zum offiziellen Stream. Der Link wird zentral im Landingpage Stream-Banner gepflegt.',
'Zum finalen Stream',
'https://twitch.tv/jayuhime',
'Stream noch nicht freigegeben',
TRUE,
'Finale abgeschlossen',
'Danke fuer diese Award-Nacht',
'Die Gewinner:innen bleiben im Archiv sichtbar. Highlights und VODs koennen hier verlinkt werden.',
'Highlights ansehen',
'',
'Award-Kategorien',
'Die Kategorien bilden Community-Leistung, Content-Qualitaet und besondere Momente der Season ab.',
'Unterkategorien',
'Unterkategorien helfen dem Team, Nominierungen sauber zu reviewen und faire Finalfelder zu bauen.',
'[{"label":"Twitch","url":"https://twitch.tv/jayuhime"},{"label":"Discord","url":"https://discord.gg/"},{"label":"X","url":"https://x.com/"}]',
'[{"question":"Wann startet die naechste Phase?","answer":"Die aktuellen Termine stehen auf der Landingpage und im Admin-Jahresplan."},{"question":"Wie werden Gewinner:innen bestimmt?","answer":"Nominierungen, Review und Voting laufen phasenweise. Das Team prueft Finalfelder vor der Veroeffentlichung."},{"question":"Wo pflege ich den finalen Stream-Link?","answer":"Der Stream-Link wird zentral im Landingpage Stream-Banner gepflegt."}]',
'[]',
'[]',
'[]',
'https://twitchtracker.com/api',
'Automatische TwitchTracker-Werte dienen als Review-Hilfe. Bei fehlenden oder unvollstaendigen Daten entscheidet das Team manuell.',
'[{"pattern":"localhost","reason":"Lokale Testlinks werden im Review blockiert."},{"pattern":"example.com","reason":"Platzhalterlinks sollen nicht als echte Nominierung freigegeben werden."}]',
TRUE,
TRUE,
TRUE,
'Clip-Einreichungen sind aktuell geschlossen.',
TRUE,
DATE '2026-06-01',
DATE '2026-08-15',
'Showact-Bewerbungen sind aktuell geschlossen.',
'[{"key":"performanceLength","label":"Geplante Laenge","type":"text","required":true},{"key":"contentRating","label":"Content-Hinweise","type":"textarea","required":false}]',
TRUE,
FALSE,
FALSE,
'',
'',
'',
'jayuhime_admin',
'Jayuhime Admin',
FALSE,
'',
'',
'',
'user:read:email',
3,
FALSE,
'Sternenpause',
'Die Award-Galaxie wird gerade liebevoll poliert. Schau gleich wieder vorbei.'
)
ON CONFLICT ("Id") DO NOTHING;
SELECT setval(pg_get_serial_sequence('"SiteSettings"', 'Id'), COALESCE((SELECT MAX("Id") FROM "SiteSettings"), 1));
"""
);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(
"""
DELETE FROM "SiteSettings"
WHERE "Id" = 1
AND "HostDisplayName" = 'Jayuhime'
AND "DemoLoginPasswordHash" = ''
AND "TwitchClientSecret" = '';
"""
);
}
}