You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

51 lines
1.3 KiB

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)
}