// SPDX-License-Identifier: AGPL-3.0-or-later package store import ( "database/sql" "fmt" "time" "kode.naiv.no/olemd/favoritter/internal/model" ) type SettingsStore struct { db *sql.DB } func NewSettingsStore(db *sql.DB) *SettingsStore { return &SettingsStore{db: db} } // Get returns the current site settings. func (s *SettingsStore) Get() (*model.SiteSettings, error) { var settings model.SiteSettings var updatedAt string err := s.db.QueryRow( `SELECT site_name, site_description, signup_mode, updated_at FROM site_settings WHERE id = 1`, ).Scan(&settings.SiteName, &settings.SiteDescription, &settings.SignupMode, &updatedAt) if err != nil { return nil, fmt.Errorf("query site settings: %w", err) } settings.UpdatedAt, _ = time.Parse(time.RFC3339, updatedAt) return &settings, nil } // Update updates the site settings. func (s *SettingsStore) Update(siteName, siteDescription, signupMode string) error { _, err := s.db.Exec( `UPDATE site_settings SET site_name = ?, site_description = ?, signup_mode = ?, updated_at = strftime('%Y-%m-%dT%H:%M:%SZ', 'now') WHERE id = 1`, siteName, siteDescription, signupMode, ) return err }