package db import ( "database/sql" "errors" "fmt" "sync" "th7/data/core" _ "github.com/mattn/go-sqlite3" ) type SQLite3Adapter struct { mu sync.Mutex db *sql.DB } func NewSQLite3Adapter(dbInfo map[string]interface{}) (*SQLite3Adapter, error) { var adapter SQLite3Adapter // if path is given ... if _, ok := dbInfo["path"]; !ok { return &adapter, errors.New("sqlite3 requires a path config variable") } path := fmt.Sprint(dbInfo["path"]) db, err := sql.Open("sqlite3", path) if err != nil { return &adapter, err } adapter.db = db const create string = ` CREATE TABLE IF NOT EXISTS logs ( id INTEGER NOT NULL, type TEXT NOT NULL, unit TEXT NOT NULL, value REAL NOT NULL, timestamp TEXT NOT NULL );` if _, err := adapter.db.Exec(create); err != nil { return &adapter, err } return &adapter, nil } func (ad *SQLite3Adapter) Close() { ad.db.Close() } func (ad *SQLite3Adapter) Save([]core.Channel) error { ad.mu.Lock() defer ad.mu.Unlock() fmt.Println("TODO save data...") return nil }