46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
|
|
// 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
|
||
|
|
}
|