From 534ad07a7334964ad2c45c84bcf012d19fa1fcae Mon Sep 17 00:00:00 2001 From: mikl0s Date: Sun, 22 Feb 2026 21:56:38 +0000 Subject: [PATCH] feat: add npm run setup seed script for database initialization Co-Authored-By: Claude Opus 4.6 --- package.json | 3 ++- scripts/setup.js | 65 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 scripts/setup.js diff --git a/package.json b/package.json index 5c4291a..62b8fd8 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "lint": "next lint", "typecheck": "tsc --noEmit", "format": "prettier --write .", - "format:check": "prettier --check ." + "format:check": "prettier --check .", + "setup": "node scripts/setup.js" }, "dependencies": { "@hookform/resolvers": "5.2.2", diff --git a/scripts/setup.js b/scripts/setup.js new file mode 100644 index 0000000..17379b9 --- /dev/null +++ b/scripts/setup.js @@ -0,0 +1,65 @@ +#!/usr/bin/env node + +const Database = require("better-sqlite3") +const path = require("path") +const fs = require("fs") + +const DB_PATH = path.join(process.cwd(), "data", "quotes.db") +const dataDir = path.dirname(DB_PATH) + +console.log("FoamKing Prisberegner - Database Setup") +console.log("======================================\n") + +// Create data directory +if (!fs.existsSync(dataDir)) { + fs.mkdirSync(dataDir, { recursive: true }) + console.log("Created data/ directory") +} + +// Check if DB already exists +const dbExists = fs.existsSync(DB_PATH) +if (dbExists) { + console.log("Database already exists at", DB_PATH) + console.log("Delete data/quotes.db to start fresh.\n") + process.exit(0) +} + +const db = new Database(DB_PATH) + +db.pragma("journal_mode = WAL") + +db.exec(` + CREATE TABLE quotes ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + postal_code TEXT NOT NULL, + address TEXT, + area REAL NOT NULL, + height REAL NOT NULL, + include_floor_heating INTEGER DEFAULT 1, + flooring_type TEXT DEFAULT 'STANDARD', + customer_name TEXT NOT NULL, + customer_email TEXT NOT NULL, + customer_phone TEXT NOT NULL, + remarks TEXT, + total_excl_vat REAL NOT NULL, + total_incl_vat REAL NOT NULL, + status TEXT DEFAULT 'new', + created_at TEXT DEFAULT CURRENT_TIMESTAMP, + email_opened_at TEXT + ) +`) + +// Set auto-increment to start at 1000 +db.exec( + "INSERT INTO quotes (id, postal_code, area, height, customer_name, customer_email, customer_phone, total_excl_vat, total_incl_vat) VALUES (999, '0000', 0, 0, 'init', 'init', 'init', 0, 0)" +) +db.exec("DELETE FROM quotes WHERE id = 999") + +db.close() + +console.log("Database created at", DB_PATH) +console.log("Quote IDs will start at 1000.\n") +console.log("Next steps:") +console.log(" 1. Configure .env.local (see SETUP.md / OPSÆTNING.md)") +console.log(" 2. npm run build") +console.log(" 3. npm start")