refactor(db): switch records layer to Prisma

- Replace hand-written node:sqlite queries with a Prisma client using
  the better-sqlite3 driver adapter
- Version the schema with migrations: baseline table, timestamp
  normalisation, and WAL journal mode
- Store timestamps with an explicit UTC offset so they stop being parsed
  as local time
- Show created/updated times on the edit page, formatted with dayjs
- Move the root redirect into next.config to avoid a prerender error
- Run migrations from the container entrypoint before starting the server

BREAKING CHANGE: DNSMASQ_ADMIN_DB_PATH is replaced by DATABASE_URL, which
must be a Prisma connection URL (file:./data/dnsmasq-admin.db). Existing
database files are migrated in place and need no conversion.
This commit is contained in:
jamo.siu@gmail.com committed 2026-10-12 14:27:03 +08:00
1 parent 97ad09ad8a
commit 1e4f028685
25 files changed
+1796 -141

No files matched your search

+10 -3
View File
@@ -3,12 +3,17 @@
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"dev": "prisma generate && next dev",
"build": "prisma generate && next build",
"start": "next start",
"lint": "eslint"
"lint": "eslint",
"db:generate": "prisma generate",
"db:migrate": "prisma migrate deploy"
},
"dependencies": {
"@prisma/adapter-better-sqlite3": "7.10.0",
"@prisma/client": "^7.10.0",
"dayjs": "^1.11.23",
"next": "16.4.0",
"react": "19.3.0",
"react-dom": "19.3.0"
@@ -18,9 +23,11 @@
"@types/node": "24",
"@types/react": "^19",
"@types/react-dom": "^19",
"dotenv": "^18.0.6",
"eslint": "^9",
"eslint-config-next": "16.4.0",
"prettier": "^3.9.9",
"prisma": "7.10.0",
"tailwindcss": "^4",
"typescript": "^5"
},