package db import ( "database/sql" "os" "path/filepath" _ "modernc.org/sqlite" ) func Init(path string) (*sql.DB, error) { if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { return nil, err } db, err := sql.Open("sqlite", path+"?_pragma=foreign_keys(1)&_pragma=busy_timeout(5000)") if err != nil { return nil, err } if _, err := db.Exec(migrations); err != nil { return nil, err } return db, nil } const migrations = ` CREATE TABLE IF NOT EXISTS users ( id TEXT PRIMARY KEY, email TEXT UNIQUE NOT NULL, password_hash TEXT NOT NULL, email_verified BOOLEAN DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, last_login_at DATETIME ); CREATE TABLE IF NOT EXISTS user_sync ( user_id TEXT PRIMARY KEY REFERENCES users(id) ON DELETE CASCADE, data TEXT NOT NULL, version INTEGER DEFAULT 1, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); `