Files
website/storage/db.go
2025-03-26 08:36:11 +00:00

79 lines
1.7 KiB
Go

package storage
import (
"database/sql"
"log"
_ "modernc.org/sqlite"
)
func InitDB(filepath string) *sql.DB {
db, err := sql.Open("sqlite", filepath)
if err != nil {
log.Fatal("❌ Failed to open DB:", err)
}
createThunderballResultsTable := `
CREATE TABLE IF NOT EXISTS results_thunderball (
id INTEGER PRIMARY KEY AUTOINCREMENT,
draw_date TEXT NOT NULL UNIQUE,
machine TEXT,
ballset TEXT,
ball1 INTEGER,
ball2 INTEGER,
ball3 INTEGER,
ball4 INTEGER,
ball5 INTEGER,
thunderball INTEGER
);`
if _, err := db.Exec(createThunderballResultsTable); err != nil {
log.Fatal("❌ Failed to create Thunderball table:", err)
}
createMyTicketsTable := `
CREATE TABLE IF NOT EXISTS my_tickets (
id INTEGER PRIMARY KEY AUTOINCREMENT,
game_type TEXT NOT NULL,
draw_date TEXT NOT NULL,
ball1 INTEGER,
ball2 INTEGER,
ball3 INTEGER,
ball4 INTEGER,
ball5 INTEGER,
bonus1 INTEGER,
bonus2 INTEGER,
duplicate BOOLEAN DEFAULT 0,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);`
if _, err := db.Exec(createMyTicketsTable); err != nil {
log.Fatal("❌ Failed to create MyTickets table:", err)
}
createUsersTable := `
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT NOT NULL UNIQUE,
password_hash TEXT NOT NULL
);`
if _, err := db.Exec(createUsersTable); err != nil {
log.Fatal("❌ Failed to create Users table:", err)
}
createAuditLogTable := `
CREATE TABLE IF NOT EXISTS auditlog (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT,
success INTEGER,
timestamp TEXT
);`
if _, err := db.Exec(createAuditLogTable); err != nil {
log.Fatal("❌ Failed to create Users table:", err)
}
return db
}