From 4027bab5fba3bcb749a6b314366d1ee1985ef8ac Mon Sep 17 00:00:00 2001 From: Ava Gaiety W Date: Wed, 13 Nov 2024 18:46:41 -0700 Subject: [PATCH] WIP db with sources and publishers, contributing.md --- .env | 1 + .gitignore | 1 + .mise.toml | 2 ++ CONTRIBUTING.md | 21 +++++++++++++++++++++ README.md | 6 +++++- bun.lockb | Bin 0 -> 40218 bytes db.sqlite | Bin 0 -> 32768 bytes drizzle.config.ts | 11 +++++++++++ package.json | 8 ++++++++ src/db/index.ts | 33 +++++++++++++++++++++++++++++++++ src/db/publishers.ts | 12 ++++++++++++ src/db/schema.ts | 14 ++++++++++++++ src/db/sources.ts | 12 ++++++++++++ 13 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 .env create mode 100644 .gitignore create mode 100644 .mise.toml create mode 100644 CONTRIBUTING.md create mode 100755 bun.lockb create mode 100644 db.sqlite create mode 100644 drizzle.config.ts create mode 100644 package.json create mode 100644 src/db/index.ts create mode 100644 src/db/publishers.ts create mode 100644 src/db/schema.ts create mode 100644 src/db/sources.ts diff --git a/.env b/.env new file mode 100644 index 0000000..c01d9a3 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +DB_FILE_NAME=db.sqlite diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/.mise.toml b/.mise.toml new file mode 100644 index 0000000..a94d1ed --- /dev/null +++ b/.mise.toml @@ -0,0 +1,2 @@ +[tools] +bun = "latest" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..5323e73 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,21 @@ +# GMScreen Contributing + +## Project Setup + +### Dependencies + +- [mise-en-place](https://mise.jdx.dev/) globally installed +- `mise use` will install tools such as `bun` and potentially more + +### Stack + +- Bun (Serverside JS Runner, Server) +- LibSQL (SQLite replacement, database) + - Drizzle + - DrizzleKit + +### Updating Data + +Data is stored in `./db.sqlite` + +To update it, modify the files in `./src/db` and run `bun src/db/index.ts`. diff --git a/README.md b/README.md index 5c524cb..b445a1c 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # gmscreen -GM Screen Printing Tool \ No newline at end of file +GM Screen Printing Tool + +--- + +Project setup can be found in [CONTRIBUTING.md](./CONTRIBUTING.md) diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..8a124842d058798ac9d57cfcc691bb3152d2b425 GIT binary patch literal 40218 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 QTz()lA-G-eKkxtl54N1!D*ylh literal 0 HcmV?d00001 diff --git a/db.sqlite b/db.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..89f4c0d87d893c114f8bee6fd4fac24c3e3f7289 GIT binary patch literal 32768 zcmeI)&2Q3R9Ki8Dl+g`gUE+Zd6KS%8BU{GIVoW^Almp7xi(uS|!dACNUba%)5>I&Y zKQi%O@DEtB#KSJ0%@XfE(5)8SrUy+Xd>b0t=cT{r_o0{4r+u+euwBb|-EtaL*H~6& z6d{zyhM_3Rl3XX{da*?0M)+b!ev82NRhvu7;@b~#S*yjqD0)M`GyQS;W&Bh8ncQVT z009ILKmY**5I_I{1pc1D8%;|*NQtg)H+QU~{Z6fJxA!ck(sAmQPSZZT+4;Rg6z=`Yq-{tJ5bz9ey}u}u7tHjCMmjV-=f{>INQ>| zSN94gE=BmIu?OH4``9&AOWci+t$#oIzT;CIoCVfg6x^@&Im1$l*4}K9kcJ^4K*}y1k+FVU;k3QYjdH0R^*2T z0R#|0009ILKmY**5I_I{1a7{-axAROme*~kDsSkow4B{N*WGVF%47}?4;Slp!*=(a zR&#N?)yVAk8`Wf+xc*%U=_iVQqJO>lDKbI?5I_I{1Q0*~0R#|0009IL7!-&KH7UG# z1hIHXO$mQuNK7`oHRV-B<+jkjDe}XD00IagfB*srAb { + console.log('Deleting Existing Data...') + await deleteData(); + console.log('Data Deleted!\n=====\nSeeding Data...') + await seedData(); + console.log('Data Seeded!') +})().catch(err => { + console.error(err); +}); diff --git a/src/db/publishers.ts b/src/db/publishers.ts new file mode 100644 index 0000000..1160b8e --- /dev/null +++ b/src/db/publishers.ts @@ -0,0 +1,12 @@ +import { publisherTable } from './schema'; + +type Publisher = typeof publisherTable.$inferInsert; + +const publishers: Array = [ + { + name: 'Limithron', + url: 'https://www.limithron.com/', + } +] + +export default publishers; diff --git a/src/db/schema.ts b/src/db/schema.ts new file mode 100644 index 0000000..e08bcb0 --- /dev/null +++ b/src/db/schema.ts @@ -0,0 +1,14 @@ +import { int, sqliteTable, text } from "drizzle-orm/sqlite-core"; + +export const publisherTable = sqliteTable("publisher", { + id: int().primaryKey({ autoIncrement: true }), + name: text().notNull().unique(), + url: text().notNull().unique(), +}); + +export const sourceTable = sqliteTable("source", { + id: int().primaryKey({ autoIncrement: true }), + name: text().notNull().unique(), + url: text().notNull().unique(), +}); + diff --git a/src/db/sources.ts b/src/db/sources.ts new file mode 100644 index 0000000..b7514c1 --- /dev/null +++ b/src/db/sources.ts @@ -0,0 +1,12 @@ +import { sourceTable } from './schema'; + +type Source = typeof sourceTable.$inferInsert; + +const sources: Array = [ + { + name: 'Pirate Borg', + url: 'https://www.limithron.com/pirateborg', + } +] + +export default sources;