package main import ( "database/sql" _ "modernc.org/sqlite" // Import the SQLite driver ) func initDb() *sql.DB { db, err := sql.Open("sqlite", "./data/data.db?_pragma=journal_mode(WAL)&_pragma=synchronous(NORMAL)&_pragma=foreign_keys(ON)") if err != nil { e.Logger.Fatal(err) } // Create a table sqlStmt := ` CREATE TABLE IF NOT EXISTS boxes (id INTEGER PRIMARY KEY, value BOOLEAN); ` _, err = db.Exec(sqlStmt) if err != nil { e.Logger.Fatalf("%q: %s\n", err, sqlStmt) } return db } func getBoxes() map[int]bool { rows, err := db.Query("SELECT id, value FROM boxes") if err != nil { e.Logger.Fatal(err) } boxes := make(map[int]bool, 1000) for i := 0; i < 1000; i++ { boxes[i] = false } for rows.Next() { var id int var value bool err = rows.Scan(&id, &value) if err != nil { e.Logger.Fatal(err) } boxes[id] = value } defer rows.Close() return boxes } func setBox(id int, value bool) { e.Logger.Info("START INSERT") stmt, err := db.Prepare("INSERT OR REPLACE INTO boxes(id, value) VALUES(?, ?)") if err != nil { e.Logger.Fatal(err) } e.Logger.Info("PREPARED") res, err := stmt.Exec(id, value) if err != nil { e.Logger.Fatal(err) } stmt.Close() e.Logger.Info("INSERTED") e.Logger.Info(res) }