Files
website/storage/db.go

83 lines
1.8 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,
userId INTEGER NOT NULL,
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,
purchased_date TEXT,
purchased_location TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (userId) REFERENCES users(id)
);`
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
}