package storage import ( "database/sql" "fmt" ) // GetSetting retrieves a value from the settings table. // Returns (value, true, nil) if found, ("", false, nil) if not found, ("", false, err) on error. func (db *DB) GetSetting(key string) (string, bool, error) { var value string err := db.sql.QueryRow("SELECT value FROM settings WHERE key = ?", key).Scan(&value) if err == sql.ErrNoRows { return "", false, nil } if err != nil { return "", false, fmt.Errorf("getting setting %q: %w", key, err) } return value, true, nil } // SetSetting inserts or updates a key-value pair in the settings table. func (db *DB) SetSetting(key, value string) error { _, err := db.sql.Exec( `INSERT INTO settings (key, value, updated_at) VALUES (?, ?, CURRENT_TIMESTAMP) ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = CURRENT_TIMESTAMP`, key, value, ) if err != nil { return fmt.Errorf("setting %q: %w", key, err) } return nil }