sqlite
This commit is contained in:
73
src/box-db.go
Normal file
73
src/box-db.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
_ "github.com/mattn/go-sqlite3" // Import the SQLite driver
|
||||
)
|
||||
|
||||
func initDb() *sql.DB {
|
||||
|
||||
db, err := sql.Open("sqlite3", "./data/data.db")
|
||||
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)
|
||||
}
|
||||
Reference in New Issue
Block a user