package db
import (
"database/sql"
"log"
"git.sr.ht/~evanj/security"
_ "github.com/mattn/go-sqlite3"
)
type DB struct {
*sql.DB
log *log.Logger
sec securer
}
type securer interface {
TokenCreate(val security.TokenMap) (string, error)
TokenFrom(tokenString string) (security.TokenMap, error)
HashCreate(salt, pass string) (string, error)
HashCompare(salt, pass, hash string) error
}
func New(log *log.Logger, creds string, sec securer) (*DB, error) {
conn, err := sql.Open("sqlite3", creds)
if err != nil {
return nil, err
}
db := &DB{
conn,
log,
sec,
}
return db, nil
}
func (db *DB) EnsureSetup() error {
res, err := db.Exec(`
CREATE TABLE cms_user (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
NAME TEXT UNIQUE NOT NULL,
HASH TEXT NOT NULL
);
`)
_ = res
_ = err
return nil
}