diff --git a/api/src/controllers/seed/insert/entries.ts b/api/src/controllers/seed/insert/entries.ts index 7873c586..3979c260 100644 --- a/api/src/controllers/seed/insert/entries.ts +++ b/api/src/controllers/seed/insert/entries.ts @@ -1,4 +1,4 @@ -import { type SQL, eq, sql } from "drizzle-orm"; +import { type Column, type SQL, eq, sql } from "drizzle-orm"; import { db } from "~/db"; import { entries, @@ -11,6 +11,8 @@ import type { SeedEntry } from "~/models/entry"; import { processOptImage } from "../images"; import { guessNextRefresh } from "../refresh"; +type EntryI = typeof entries.$inferInsert; + const generateSlug = (showSlug: string, entry: SeedEntry): string => { switch (entry.kind) { case "episode": @@ -27,14 +29,20 @@ export const insertEntries = async ( items: SeedEntry[], ) => { const retEntries = await db.transaction(async (tx) => { - const vals = items.map((seed) => { + const vals: EntryI[] = items.map((seed) => { const { translations, videos, ...entry } = seed; return { ...entry, showPk: show.pk, slug: generateSlug(show.slug, seed), - thumbnails: processOptImage(seed.thumbnail), + thumbnail: processOptImage(seed.thumbnail), nextRefresh: guessNextRefresh(entry.airDate ?? new Date()), + episodeNumber: + entry.kind === "episode" + ? entry.episodeNumber + : entry.kind === "special" + ? entry.number + : undefined, }; }); const ret = await tx @@ -111,10 +119,10 @@ export const insertEntries = async ( })); }; -export function computeVideoSlug(showSlug: SQL, needsRendering: SQL) { +export function computeVideoSlug(showSlug: SQL | Column, needsRendering: SQL) { return sql` concat( - ${showSlug}::text, + ${showSlug}, case when ${videos.part} is not null then ('-p' || ${videos.part}) else '' end, case when ${videos.version} <> 1 then ('-v' || ${videos.version}) else '' end, case when ${needsRendering} then concat('-', ${videos.rendering}) else '' end diff --git a/api/src/db/schema/entries.ts b/api/src/db/schema/entries.ts index ba0ebfad..58e40b4c 100644 --- a/api/src/db/schema/entries.ts +++ b/api/src/db/schema/entries.ts @@ -63,7 +63,7 @@ export const entries = schema.table( extraKind: text(), airDate: date(), runtime: integer(), - thumbnails: image(), + thumbnail: image(), externalId: entry_extid(), diff --git a/api/src/db/schema/videos.ts b/api/src/db/schema/videos.ts index 2464629f..abe1049f 100644 --- a/api/src/db/schema/videos.ts +++ b/api/src/db/schema/videos.ts @@ -34,7 +34,7 @@ export const videos = schema.table( ); export const entryVideoJoin = schema.table( - "entry_video_jointure", + "entry_video_join", { entry: integer() .notNull()