169 lines
7.2 KiB
C#
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" = '';
|
|
"""
|
|
);
|
|
}
|
|
}
|