package main import ( "database/sql" "fmt" "strings" ) func (a *App) readSettings() (AppSettings, error) { var raw string err := a.db.QueryRow(`SELECT value FROM app_settings WHERE key = 'view_proof_in_view'`).Scan(&raw) if err != nil { if err == sql.ErrNoRows { return AppSettings{ViewProofInView: false}, nil } return AppSettings{}, fmt.Errorf("read app setting view_proof_in_view: %w", err) } return AppSettings{ViewProofInView: settingBool(raw)}, nil } func (a *App) updateViewProofInView(enabled bool) error { _, err := a.db.Exec(` INSERT INTO app_settings(key, value, updated_at) VALUES('view_proof_in_view', ?, CURRENT_TIMESTAMP) ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = CURRENT_TIMESTAMP `, settingString(enabled)) if err != nil { return fmt.Errorf("update app setting view_proof_in_view: %w", err) } return nil } func settingBool(value string) bool { switch strings.TrimSpace(strings.ToLower(value)) { case "1", "true", "yes", "on": return true default: return false } } func settingString(value bool) string { if value { return "1" } return "0" }