package models import ( "database/sql" _ "github.com/mattn/go-sqlite3" ) type Datastore interface { AllDevices() ([]*Device, error) InsertDevice(*Device) error } type DB struct { *sql.DB } func NewDB(dataSourceName string) (*DB, error) { db, err := sql.Open("sqlite3", dataSourceName) if err != nil { return nil, err } if err = db.Ping(); err != nil { return nil, err } sqlStmt := `CREATE TABLE IF NOT EXISTS devices (topic TEXT not null primary key, customerID TEXT, deviceID TEXT, projectName TEXT, mac TEXT, sn TEXT, lastMsg TIMESTAMP DEFAULT CURRENT_TIMESTAMP);` _, err = db.Exec(sqlStmt) if err != nil { return nil, err } return &DB{db}, nil }