71 lines
2 KiB
TypeScript
71 lines
2 KiB
TypeScript
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<string[]>().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],
|
|
})
|
|
}))
|