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