import { sql, relations } from "drizzle-orm"; import { int, sqliteTable as table, text } from "drizzle-orm/sqlite-core"; export const publisherTable = table("publisher", { id: int().primaryKey({ autoIncrement: true }), name: text().notNull().unique(), url: text().notNull().unique(), }); export const publisherRelations = relations(publisherTable, ({ many }) => ({ sources: many(sourceTable) })) export const sourceTable = table("source", { id: int().primaryKey({ autoIncrement: true }), name: text().notNull().unique(), url: text().notNull().unique(), publisherId: int("publisher_id"), }); export const sourceRelations = relations(sourceTable, ({ one, many }) => ({ publisher: one(publisherTable, { fields: [sourceTable.publisherId], references: [publisherTable.id], }), chunks: many(chunkTable) })) export const chunkTable = table("chunk", { id: int().primaryKey({ autoIncrement: true }), name: text().notNull(), pages: text("pages", { mode: "json" }).notNull().$type().default(sql`'[]'`), sourceId: int("source_id"), }); export const chunkRelations = relations(chunkTable, ({ one, many }) => ({ source: one(sourceTable, { fields: [chunkTable.sourceId], references: [sourceTable.id], }), tables: many(tableTable) })) export const tableTable = table("table", { id: int().primaryKey({ autoIncrement: true }), name: text(), order: int().notNull().default(sql`0`), chunkId: int("chunk_id"), }); export const tableRelations = relations(tableTable, ({ one, many }) => ({ chunk: one(chunkTable, { fields: [tableTable.chunkId], references: [chunkTable.id], }), outcomes: many(outcomeTable) })) export const outcomeTable = table("outcome", { id: int().primaryKey({ autoIncrement: true }), name: text().notNull(), roll: int().notNull(), tableId: int("table_id"), }); export const outcomeRelations = relations(outcomeTable, ({ one }) => ({ table: one(tableTable, { fields: [outcomeTable.tableId], references: [tableTable.id], }) }))