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 }