From bbc52e58b437110f5a92987bfdfb605dbafd1a96 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Thu, 24 Oct 2024 21:34:20 +0200 Subject: [PATCH] Add entries sql setup --- api/src/db/schema.ts | 53 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 api/src/db/schema.ts diff --git a/api/src/db/schema.ts b/api/src/db/schema.ts new file mode 100644 index 00000000..84ef301b --- /dev/null +++ b/api/src/db/schema.ts @@ -0,0 +1,53 @@ +import { sql } from "drizzle-orm"; +import { + check, + date, + integer, + jsonb, + pgEnum, + pgTable, + primaryKey, + text, + uuid, + varchar, +} from "drizzle-orm/pg-core"; + +export const entryType = pgEnum("entry_type", ["unknown", "episode", "movie", "special", "extra"]); + +export const entries = pgTable( + "entries", + { + pk: integer().primaryKey().generatedAlwaysAsIdentity(), + id: uuid().notNull().unique().defaultRandom(), + slug: varchar({ length: 255 }).notNull().unique(), + // showId: integer().references(() => show.id), + order: integer().notNull(), + seasonNumber: integer(), + episodeNumber: integer(), + type: entryType().notNull(), + airDate: date(), + runtime: integer(), + thumbnails: jsonb(), + nextRefresh: date(), + externalId: jsonb().notNull().default({}), + }, + (t) => ({ + // episodeKey: unique().on(t.showId, t.seasonNumber, t.episodeNumber), + orderPositive: check("orderPositive", sql`${t.order} >= 0`), + }), +); + +export const entriesTranslation = pgTable( + "entries_translation", + { + pk: integer() + .notNull() + .references(() => entries.id), + language: varchar({ length: 255 }).notNull(), + name: text(), + description: text(), + }, + (t) => ({ + pk: primaryKey({ columns: [t.pk, t.language] }), + }), +);