initial commit

This commit is contained in:
2025-10-01 20:49:02 +02:00
parent 62020bdf74
commit 4c732b8f44
42 changed files with 10548 additions and 0 deletions

142
backend/db.go Normal file
View File

@@ -0,0 +1,142 @@
package main
import (
"database/sql"
"log"
"strings"
_ "modernc.org/sqlite"
)
func database() *sql.DB {
db, err := sql.Open("sqlite", "./app.db")
if err != nil {
log.Fatal(err)
}
// Seed default menu items if empty
row := db.QueryRow("SELECT COUNT(*) FROM menu_items")
var count int
_ = row.Scan(&count)
if count == 0 {
log.Println("Seeding default menu_items…")
defaults := []struct {
category string
name string
}{
{"soup", "Erőleves"},
{"soup", "Dörgicsei Csibeleves"},
{"soup", "Újházi Tyúkhúsleves"},
{"soup", "Jókai Bableves"},
{"soup", "Tárkonyos Raguleves"},
{"soup", "Frankfurti Leves"},
{"soup", "Tavaszi Zöldségleves"},
{"soup", "Fokhagyma Krémleves"},
{"main", "Babragus Csülök"},
{"main", "Rántott Csirkemell"},
{"main", "Rántott Gomba és Rántott Camembert"},
{"main", "Cordon Bleu"},
{"main", "Cigánypecsenye Kakastaréjjal"},
{"main", "Mozzarellás-Paradicsomos Csirkemell Roston"},
{"main", "Kemencés Fokhagymás Csülökszeletek"},
{"main", "Holstein Szelet"},
{"main", "Jalapeños Sajtgolyók"},
{"main", "Cornflakes Bundában Sült Csirkemell"},
{"main", "Baconköntösben Pirított Csirkemáj"},
{"side", "Friss Saláta Kapros Joghurtos Öntettel"},
{"side", "Párolt Rizs"},
{"side", "Fűszeres Steakburgonya"},
{"side", "Grill Zöldség"},
{"side", "Lilahagymás Kukoricasaláta"},
}
for _, d := range defaults {
_, err := db.Exec("INSERT INTO menu_items (category, name) VALUES (?, ?)", d.category, d.name)
if err != nil {
log.Println("Error seeding menu item:", err)
}
}
}
// Create users table
_, err = db.Exec(`
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password TEXT NOT NULL,
role INTEGER NOT NULL DEFAULT 2
)
`)
if err != nil {
log.Fatal(err)
}
// Create settings table
_, err = db.Exec(`
CREATE TABLE IF NOT EXISTS settings (
key TEXT PRIMARY KEY,
value TEXT NOT NULL
)
`)
if err != nil {
log.Fatal(err)
}
// Seed default finalize_time if missing
_, err = db.Exec(`INSERT OR IGNORE INTO settings (key, value) VALUES ('finalize_time', '10:30')`)
if err != nil {
log.Fatal(err)
}
_, err = db.Exec(`
CREATE TABLE IF NOT EXISTS menu_items (
id INTEGER PRIMARY KEY AUTOINCREMENT,
category TEXT NOT NULL,
name TEXT NOT NULL
)
`)
if err != nil {
log.Fatal(err)
}
// Create selections table (latest choice per user)
_, err = db.Exec(`
CREATE TABLE IF NOT EXISTS selections (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL,
main TEXT NOT NULL,
side TEXT NOT NULL,
soup TEXT,
created_at TEXT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id)
)
`)
if err != nil {
log.Fatal(err)
}
// Create orders table (all placed orders for history + realtime updates)
_, err = db.Exec(`
CREATE TABLE IF NOT EXISTS orders (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL,
soup TEXT,
main TEXT NOT NULL,
side TEXT NOT NULL,
created_at TEXT NOT NULL
)
`)
if err != nil {
log.Fatal(err)
}
// Add status column if it doesn't exist
_, err = db.Exec(`ALTER TABLE orders ADD COLUMN status TEXT NOT NULL DEFAULT 'active'`)
if err != nil && !strings.Contains(err.Error(), "duplicate column name") {
log.Fatal(err)
}
return db
}