From eec99d44fc8256de25c8b5a4b7ee7850de69ceb9 Mon Sep 17 00:00:00 2001 From: Ava Gaiety W Date: Thu, 14 Nov 2024 12:40:14 -0700 Subject: [PATCH] all DB tables with seed data --- db.sqlite | Bin 32768 -> 45056 bytes src/db/data/chunks.ts | 21 +++++++++++++++++++++ src/db/data/index.ts | 5 ++++- src/db/data/outcomes.ts | 26 ++++++++++++++++++++++++++ src/db/data/tables.ts | 12 ++++++++++++ src/db/index.ts | 28 +++++++++++++++++++++++----- src/db/schema.ts | 21 +++++++++++++++++++++ 7 files changed, 107 insertions(+), 6 deletions(-) create mode 100644 src/db/data/chunks.ts create mode 100644 src/db/data/outcomes.ts create mode 100644 src/db/data/tables.ts diff --git a/db.sqlite b/db.sqlite index f111237b6f050560e47cb8ccc0766cd8435c4391..2c86ea1d6638fb0c7f9654c912723c8430ce8edb 100644 GIT binary patch delta 1180 zcmaJ=J#5oJ6!ztkCU$bUq)QaipQH3Is6hFZ7?22!gAh>?rHKTpsya!nHfpdV$1ZJuBrY)BI{O-G_^Y`8N-qMm|Y18pA z671tR&dc7NhhG^xeYlT1zW4w!NZ_NK|EK>cy6^k$yX*4{zlA5lc|Q8`-V4uI0}1X> zCxE)P?gZ~dR*dCDl8aqRibQH{(1LHGJ|^&zs?ExpM9PXT&&e8zi-}l1nIq#Q zmClh=KACJ4mF5j)VWvFWsk7`R(pmA!J#)#f0b#Pp|op0D*4!d+1|70Ur9wKL~iXzR=S^Zg(gg z2Fr#iwWb0U zbQB!{E}BF~K^NswKYfITfs?*QeGL7K?wo1_p*s|b?0BaddP%(@|NS`a{z1BOAHH*C$m1Fv)V2VQRm$KT^2>~wLx08Hvev8ZZ_19mft zLp+FUY*b~1RE*j@T+MvM05(6(3Vg$ zvrM+;QU(egWXspKW3??qkO$Dd;8O0`_ zt~cS8;N}0yz{G!xf&Ui&GoU}t@vCt$GD|W-TrbAU#4OJUce4c0Y;I17)TW02Kr=Q? Y0Fw?k_!%WO-}F}#V3gRD02Gn{0OlrJ^#A|> diff --git a/src/db/data/chunks.ts b/src/db/data/chunks.ts new file mode 100644 index 0000000..93ad712 --- /dev/null +++ b/src/db/data/chunks.ts @@ -0,0 +1,21 @@ +import { chunkTable, sourceTable } from '../schema'; + +type Chunk = typeof chunkTable.$inferInsert; +type Source = typeof sourceTable.$inferSelect; + +function findByName({ name: sourceName }: Source, name: String) { return sourceName === name } +function findIdByName(sources: Source[], name: String): number | undefined { + return sources.find(source => findByName(source, name))?.id +} + +function data(sources: Source[]): Array { + return [ + { + name: 'Distinctive Flaws', + pages: ['56'], + sourceId: findIdByName(sources, 'Pirate Borg') + } + ] as Array +} + +export default data; diff --git a/src/db/data/index.ts b/src/db/data/index.ts index ed9dc32..d0829b5 100644 --- a/src/db/data/index.ts +++ b/src/db/data/index.ts @@ -1,4 +1,7 @@ import publishersData from './publishers' import sourcesData from './sources' +import chunksData from './chunks' +import tableData from './tables' +import outcomeData from './outcomes' -export { publishersData, sourcesData } +export { publishersData, sourcesData, chunksData, tableData, outcomeData } diff --git a/src/db/data/outcomes.ts b/src/db/data/outcomes.ts new file mode 100644 index 0000000..f105fd8 --- /dev/null +++ b/src/db/data/outcomes.ts @@ -0,0 +1,26 @@ +import { outcomeTable, tableTable } from '../schema'; + +type Outcome = typeof outcomeTable.$inferInsert; +type PartialOutcome = Omit | Omit +type Table = typeof tableTable.$inferSelect; + +function outcomesForTableId(tableId: number, partialOutcomes: Array): Array { + return partialOutcomes.map((outcome, index) => { + return { + roll: index + 1, + ...outcome, + tableId, + } + }); +} + +function data(tables: Table[]): Array { + return [ + ...outcomesForTableId(tables[0].id, [ + { name: 'Drunken lush' }, + { name: 'Stubborn' }, + ]) + ] as Array +} + +export default data; diff --git a/src/db/data/tables.ts b/src/db/data/tables.ts new file mode 100644 index 0000000..d253103 --- /dev/null +++ b/src/db/data/tables.ts @@ -0,0 +1,12 @@ +import { tableTable, chunkTable } from '../schema'; + +type Table = typeof tableTable.$inferInsert; +type Chunk = typeof chunkTable.$inferSelect; + +function data(chunks: Chunk[]): Array { + return [ + { chunkId: chunks[0].id } + ] as Array
+} + +export default data; diff --git a/src/db/index.ts b/src/db/index.ts index a15c6e4..c74503e 100644 --- a/src/db/index.ts +++ b/src/db/index.ts @@ -1,16 +1,25 @@ import 'dotenv/config'; import { drizzle } from 'drizzle-orm/bun-sqlite'; -import { publisherTable, sourceTable } from './schema'; -import { publishersData, sourcesData } from './data' +import { publisherTable, sourceTable, chunkTable, tableTable, outcomeTable } from './schema'; +import { publishersData, sourcesData, chunksData, tableData, outcomeData } from './data' const db = drizzle({ connection: { source: process.env.DB_FILE_NAME! } }); async function deleteData() { - await db.delete(publisherTable) - console.log('- Publishers Deleted') + await db.delete(outcomeTable) + console.log('- Outcomes Deleted') + + await db.delete(tableTable) + console.log('- (roll) Tables Deleted') + + await db.delete(chunkTable) + console.log('- Chunks Deleted') await db.delete(sourceTable) console.log('- Sources Deleted') + + await db.delete(publisherTable) + console.log('- Publishers Deleted') } async function seedData() { @@ -18,7 +27,16 @@ async function seedData() { console.log('- Publishers Created') const sources = await db.insert(sourceTable).values(sourcesData(publishers)).returning() - console.log('- Sources Created', sources) + console.log('- Sources Created') + + const chunks = await db.insert(chunkTable).values(chunksData(sources)).returning() + console.log('- Chunks Created') + + const tables = await db.insert(tableTable).values(tableData(chunks)).returning() + console.log('- (roll) Tables Created') + + await db.insert(outcomeTable).values(outcomeData(tables)).returning() + console.log('- Outcomes Created') } (async () => { diff --git a/src/db/schema.ts b/src/db/schema.ts index f4426b0..2d77ad8 100644 --- a/src/db/schema.ts +++ b/src/db/schema.ts @@ -1,3 +1,4 @@ +import { sql } from "drizzle-orm"; import { int, sqliteTable as table, text } from "drizzle-orm/sqlite-core"; export const publisherTable = table("publisher", { @@ -13,3 +14,23 @@ export const sourceTable = table("source", { publisherId: int("publisher_id").references(() => publisherTable.id), }); +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").references(() => sourceTable.id), +}); + +export const tableTable = table("table", { + id: int().primaryKey({ autoIncrement: true }), + name: text(), + order: int().notNull().default(sql`0`), + chunkId: int("chunk_id").notNull().references(() => chunkTable.id), +}); + +export const outcomeTable = table("outcome", { + id: int().primaryKey({ autoIncrement: true }), + name: text().notNull(), + roll: int().notNull(), + tableId: int("table_id").notNull().references(() => tableTable.id), +});