package db import ( "database/sql" "person-home/internal/models" ) func GetSettings(d *sql.DB) (*models.Settings, error) { s := &models.Settings{} rows, err := d.Query("SELECT key, value FROM settings") if err != nil { return nil, err } defer rows.Close() for rows.Next() { var k, v string if err := rows.Scan(&k, &v); err != nil { return nil, err } switch k { case "site_name": s.SiteName = v case "home_title": s.HomeTitle = v case "home_subtitle": s.HomeSubtitle = v } } return s, rows.Err() } func UpdateSettings(d *sql.DB, req *models.UpdateSettingsRequest) (*models.Settings, error) { if req.SiteName != nil { if _, err := d.Exec("INSERT INTO settings (key, value) VALUES ('site_name', ?) ON CONFLICT(key) DO UPDATE SET value = ?", *req.SiteName, *req.SiteName); err != nil { return nil, err } } if req.HomeTitle != nil { if _, err := d.Exec("INSERT INTO settings (key, value) VALUES ('home_title', ?) ON CONFLICT(key) DO UPDATE SET value = ?", *req.HomeTitle, *req.HomeTitle); err != nil { return nil, err } } if req.HomeSubtitle != nil { if _, err := d.Exec("INSERT INTO settings (key, value) VALUES ('home_subtitle', ?) ON CONFLICT(key) DO UPDATE SET value = ?", *req.HomeSubtitle, *req.HomeSubtitle); err != nil { return nil, err } } return GetSettings(d) }