From bf291cc5a08aa6e9d1b358e8f13ecb2e4b96356e Mon Sep 17 00:00:00 2001 From: Kalle <38327916+Sendouc@users.noreply.github.com> Date: Thu, 21 Jul 2022 21:27:21 +0300 Subject: [PATCH] Calendar tables migration --- app/db/types.ts | 28 +++++++++++++++++ migrations/006-calendar.js | 63 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 migrations/006-calendar.js diff --git a/app/db/types.ts b/app/db/types.ts index c5c430390..21b99aa8c 100644 --- a/app/db/types.ts +++ b/app/db/types.ts @@ -76,3 +76,31 @@ export interface BadgeManager { badgeId: number; userId: number; } + +export interface CalendarEvent { + id: number; + name: string; + authorId: number; + description: string | null; + discordUrl: string | null; + bracketUrl: string | null; + participantCount: number | null; +} + +export interface CalendarEventDate { + eventId: number; + startTime: number; +} + +export interface CalendarEventWinner { + eventId: number; + teamName: string; + placement: number; + userId: number | null; + name: string | null; +} + +export interface CalendarEventBadge { + eventId: number; + badgeId: number; +} diff --git a/migrations/006-calendar.js b/migrations/006-calendar.js new file mode 100644 index 000000000..a74dab7d3 --- /dev/null +++ b/migrations/006-calendar.js @@ -0,0 +1,63 @@ +module.exports.up = function (db) { + db.prepare( + ` + create table "CalendarEvent" ( + "id" integer primary key, + "name" text not null, + "authorId" integer not null, + "description" text, + "discordUrl" text, + "bracketUrl" text, + "participantCount" integer, + foreign key ("authorId") references "User"("id") on delete restrict + ) strict + ` + ).run(); + + db.prepare( + ` + create table "CalendarEventDate" ( + "eventId" integer primary key, + "startTime" integer not null, + foreign key ("eventId") references "CalendarEvent"("id") on delete cascade + ) strict + ` + ).run(); + + db.prepare( + ` + create table "CalendarEventWinner" ( + "eventId" integer primary key, + "teamName" text not null, + "placement" integer not null, + "userId" integer, + "name" text, + foreign key ("eventId") references "CalendarEvent"("id") on delete cascade, + foreign key ("userId") references "User"("id") on delete cascade + ) strict + ` + ).run(); + + db.prepare( + ` + create table "CalendarEventBadge" ( + "eventId" integer primary key, + "badgeId" integer not null, + foreign key ("eventId") references "CalendarEvent"("id") on delete cascade, + foreign key ("badgeId") references "Badge"("id") on delete restrict, + unique("eventId", "badgeId") on conflict rollback + ) strict + ` + ).run(); +}; + +module.exports.down = function (db) { + for (const table of [ + "CalendarEventDate", + "CalendarEventWinner", + "CalendarEventBadge", + "CalendarEvent", + ]) { + db.prepare(`drop table "${table}"`).run(); + } +};