package storage import ( "database/sql" _ "github.com/mattn/go-sqlite3" ) type Database struct { db *sql.DB } func InitDB() Database { db, _ := sql.Open("sqlite3", "./license.db") db.Exec(`CREATE TABLE IF NOT EXISTS activations ( id INTEGER PRIMARY KEY AUTOINCREMENT, machine_id TEXT UNIQUE, license TEXT, activated INTEGER )`) db.Exec(`CREATE TABLE IF NOT EXISTS generations ( id INTEGER PRIMARY KEY AUTOINCREMENT, machine_id TEXT UNIQUE, license TEXT )`) return Database{db} } func (d Database) HasActivated(machineID string) bool { row := d.db.QueryRow("SELECT activated FROM activations WHERE machine_id = ?", machineID) var activated int err := row.Scan(&activated) return err == nil && activated == 1 } func (d Database) SaveActivation(machineID string, licenseText string) { d.db.Exec("INSERT OR REPLACE INTO activations(machine_id, license, activated) VALUES (?, ?, 1)", machineID, licenseText) } func (d Database) HasGenerated(machineID string) bool { row := d.db.QueryRow("SELECT license FROM generations WHERE machine_id = ?", machineID) var license string err := row.Scan(&license) return err == nil } func (d Database) SaveGenerated(machineID string, licenseText string) { d.db.Exec("INSERT OR REPLACE INTO generations(machine_id, license) VALUES (?, ?)", machineID, licenseText) }