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" = ''; """ ); } }