Added initing of db, function InitDb

This commit is contained in:
2016-03-26 18:09:19 +03:00
parent 7586114d5d
commit 2bc4849976

View File

@@ -2,6 +2,7 @@
package main
import (
"database/sql"
"flag"
"fmt"
"log"
@@ -10,11 +11,15 @@ import (
"strconv"
"strings"
"time"
_ "github.com/mattn/go-sqlite3"
)
const (
SLEEP_TIME = 3 * time.Second
KEYBOARD_BUFER_SIZE = 10000
DATABASE_NAME = "./gokeystat.db"
CAPTURE_TIME = 5 * time.Second // time between capturing keyboard to db
)
// Return map from key numbers to key names like "F1", "Tab", "d"
@@ -66,6 +71,54 @@ func GetKeyNumsFromOutput(buf []byte) []uint8 {
return keyNums
}
func InitDb(db *sql.DB, keyMap map[uint8]string) {
keyNums := make([]int, 0, len(keyMap))
for keyNum := range keyMap {
keyNums = append(keyNums, int(keyNum))
}
sqlInit := `CREATE TABLE IF NOT EXISTS keylog (
time INTEGER primary key`
for keyNum := range keyNums {
sqlInit += ",\n" + "KEY" + strconv.Itoa(keyNum) + " INTEGER"
}
sqlInit += "\n);"
_, err := db.Exec(sqlInit)
if err != nil {
log.Fatalf("%q: %s\n", err, sqlInit)
}
// Inserting keymap to table
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)
}
tx, err := db.Begin()
if err != nil {
log.Fatal(err)
}
stmt, err := tx.Prepare("insert into keymap(num, value) values(?, ?)")
if err != nil {
log.Fatal(err)
}
defer stmt.Close()
for keyNum, keyName := range keyMap {
_, err = stmt.Exec(keyNum, keyName)
if err != nil {
log.Fatal(err)
}
}
tx.Commit()
}
func main() {
keyboardId := flag.Int("id", -1, "Your keyboard id")
@@ -77,6 +130,15 @@ func main() {
flag.PrintDefaults()
return
case *keyboardId != -1:
// Opening database
db, err := sql.Open("sqlite3", DATABASE_NAME)
if err != nil {
log.Fatal(err)
}
defer db.Close()
keyMap := GetKeymap()
InitDb(db, keyMap)
cmd := exec.Command("xinput", "test", strconv.Itoa(*keyboardId))
stdout, err := cmd.StdoutPipe()