diff --git a/api/src/db/index.ts b/api/src/db/index.ts index 7a0ab7f1..529103e7 100644 --- a/api/src/db/index.ts +++ b/api/src/db/index.ts @@ -1,11 +1,13 @@ +import { drizzle } from "drizzle-orm/node-postgres"; import * as entries from "./schema/entries"; import * as shows from "./schema/shows"; -import { drizzle } from "drizzle-orm/node-postgres"; +import * as videos from "./schema/videos"; export const db = drizzle({ schema: { ...entries, ...shows, + ...videos, }, connection: { user: process.env.POSTGRES_USER ?? "kyoo", diff --git a/api/src/db/schema/videos.ts b/api/src/db/schema/videos.ts new file mode 100644 index 00000000..a4ad244f --- /dev/null +++ b/api/src/db/schema/videos.ts @@ -0,0 +1,22 @@ +import { sql } from "drizzle-orm"; +import { check, integer, text, timestamp, uuid } from "drizzle-orm/pg-core"; +import { schema } from "./utils"; + +export const videos = schema.table( + "videos", + { + pk: integer().primaryKey().generatedAlwaysAsIdentity(), + id: uuid().notNull().unique().defaultRandom(), + path: text().notNull().unique(), + rendering: integer(), + part: integer(), + version: integer(), + + createdAt: timestamp({ withTimezone: true }).notNull().defaultNow(), + }, + (t) => ({ + ratingValid: check("renderingPos", sql`0 <= ${t.rendering}`), + partValid: check("partPos", sql`0 <= ${t.part}`), + versionValid: check("versionPos", sql`0 <= ${t.version}`), + }), +);