Kyoo/api/src/db/schema/history.ts
2025-04-06 14:54:50 +02:00

31 lines
924 B
TypeScript

import { sql } from "drizzle-orm";
import { check, index, integer, jsonb, timestamp } from "drizzle-orm/pg-core";
import { entries } from "./entries";
import { profiles } from "./profiles";
import { schema } from "./utils";
import { videos } from "./videos";
export const history = schema.table(
"history",
{
pk: integer().primaryKey().generatedAlwaysAsIdentity(),
profilePk: integer()
.notNull()
.references(() => profiles.pk, { onDelete: "cascade" }),
entryPk: integer()
.notNull()
.references(() => entries.pk, { onDelete: "cascade" }),
videoPk: integer()
.notNull()
.references(() => videos.pk, { onDelete: "set null" }),
percent: integer().notNull().default(0),
time: integer(),
playedDate: timestamp({ mode: "string" }).notNull().defaultNow(),
},
(t) => [
index("history_play_date").on(t.playedDate.desc()),
check("percent_valid", sql`${t.percent} between 0 and 100`),
],
);