54 lines
844 B
Go
54 lines
844 B
Go
|
package db
|
||
|
|
||
|
import (
|
||
|
"database/sql"
|
||
|
"fmt"
|
||
|
"sync"
|
||
|
"th7/data/core"
|
||
|
|
||
|
_ "github.com/mattn/go-sqlite3"
|
||
|
)
|
||
|
|
||
|
type SQLite3Adapter struct {
|
||
|
mu sync.Mutex
|
||
|
db *sql.DB
|
||
|
}
|
||
|
|
||
|
func NewSQLite3Adapter(path string) (*SQLite3Adapter, error) {
|
||
|
|
||
|
var adapter SQLite3Adapter
|
||
|
|
||
|
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(data core.Data) {
|
||
|
ad.mu.Lock()
|
||
|
defer ad.mu.Unlock()
|
||
|
|
||
|
fmt.Println("TODO save data...", data)
|
||
|
}
|