initilize in memory db with schema

This commit is contained in:
Chakib Ben Ziane 2017-11-13 19:14:59 +01:00
parent 5b393ef586
commit 8321b36ff7
3 changed files with 77 additions and 0 deletions

66
db.go Normal file
View File

@ -0,0 +1,66 @@
package main
import (
"database/sql"
"log"
_ "github.com/mattn/go-sqlite3"
)
var (
db *sql.DB
)
const (
CREATE_DB_SCHEMA = `CREATE TABLE if not exists bookmarks (
id integer PRIMARY KEY,
URL text NOT NULL UNIQUE)`
)
// TODO: Use context when making call from request/api
func initInMemoryDb() {
var err error
//var tx *sql.Tx
db, err = sql.Open("sqlite3", "file::memory:?cache=shared")
debugPrint("in memory db opened")
logPanic(err)
_, err = db.Exec(CREATE_DB_SCHEMA)
logPanic(err)
//tx, err = db.Begin()
//logPanic(err)
//tx.Exec(CREATE_DB_SCHEMA)
//tx.Commit()
}
func initdb() {
debugPrint("[NotImplemented] initialize local db if not exists or load it")
// Check if db exists locally
// If does not exit create new one in memory
// Then flush to disk
// If exists locally, load to memory
initInMemoryDb()
}
func testInMemoryDb() {
debugPrint("test in memory")
db, err := sql.Open("sqlite3", "file::memory:?cache=shared")
defer db.Close()
rows, err := db.Query("select URL from bookmarks")
defer rows.Close()
logPanic(err)
var URL string
for rows.Next() {
rows.Scan(&URL)
log.Println(URL)
}
}

9
errors.go Normal file
View File

@ -0,0 +1,9 @@
package main
import "log"
func logPanic(err error) {
if err != nil {
log.Panic(err)
}
}

View File

@ -12,6 +12,8 @@ const (
)
func main() {
initdb()
defer db.Close()
watcher, err := fsnotify.NewWatcher()
if err != nil {