Some small changes with db, should fix saving-new-items bug

This commit is contained in:
2016-03-26 22:38:01 +03:00
parent f887a489b2
commit c9d59161d8

View File

@@ -18,7 +18,7 @@ import (
const ( const (
SLEEP_TIME = 3 * time.Second SLEEP_TIME = 3 * time.Second
KEYBOARD_BUFER_SIZE = 10000 KEYBOARD_BUFER_SIZE = 10000
DATABASE_NAME = "./gokeystat.db" DATABASE_NAME = "file:gokeystat.db?cache=shared&mode=rwc"
CAPTURE_TIME = 5 // time in seconds between capturing keyboard to db CAPTURE_TIME = 5 // time in seconds between capturing keyboard to db
) )
@@ -101,26 +101,22 @@ func InitDb(db *sql.DB, keyMap map[uint8]string) {
sqlInit += ",\n" + "KEY" + strconv.Itoa(keyNum) + " INTEGER" sqlInit += ",\n" + "KEY" + strconv.Itoa(keyNum) + " INTEGER"
} }
sqlInit += "\n);" sqlInit += "\n);"
// Inserting keymap to table
sqlInit += ` CREATE TABLE IF NOT EXISTS keymap (
num INTEGER primary key,
value STRING
);`
_, err := db.Exec(sqlInit) _, err := db.Exec(sqlInit)
if err != nil { if err != nil {
log.Fatalf("%q: %s\n", err, sqlInit) log.Fatalf("%q: %s\n", err, sqlInit)
} }
// Inserting keymap to table rows, err := db.Query("SELECT COUNT(*) FROM keymap")
sqlInit = `CREATE TABLE IF NOT EXISTS keymap (
num INTEGER primary key,
value STRING
);`
_, err = db.Exec(sqlInit)
if err != nil {
log.Fatalf("%q: %s\n", err, sqlInit)
}
rows, err := db.Query("select COUNT(*) from keymap")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
defer rows.Close()
var rowsCount int var rowsCount int
rows.Next() rows.Next()
@@ -129,12 +125,13 @@ func InitDb(db *sql.DB, keyMap map[uint8]string) {
// already inserted keymap // already inserted keymap
return return
} }
rows.Close()
tx, err := db.Begin() tx, err := db.Begin()
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
stmt, err := tx.Prepare("insert into keymap(num, value) values(?, ?)") stmt, err := tx.Prepare("INSERT INTO keymap(num, value) VALUES(?, ?)")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
@@ -162,10 +159,17 @@ func AddStatTimeToDb(db *sql.DB, statTime StatForTime, keyMap map[uint8]string)
sqlStmt += ",\n" + strconv.Itoa(keyNumber) sqlStmt += ",\n" + strconv.Itoa(keyNumber)
} }
sqlStmt += ")" sqlStmt += ")"
_, err := db.Exec(sqlStmt) tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
_, err = tx.Exec(sqlStmt)
if err != nil { if err != nil {
log.Printf("%q: %s\n", err, sqlStmt) log.Printf("%q: %s\n", err, sqlStmt)
} }
tx.Commit()
} }
// Returns slice with StatForTime objects that // Returns slice with StatForTime objects that
@@ -247,7 +251,10 @@ func main() {
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
} }
db.SetMaxIdleConns(5)
db.SetMaxOpenConns(5)
defer db.Close() defer db.Close()
keyMap := GetKeymap() keyMap := GetKeymap()
InitDb(db, keyMap) InitDb(db, keyMap)