Change own DbTable implementation for Gorm

This commit is contained in:
Pablu23
2024-05-14 11:28:49 +02:00
parent 620a043286
commit 1bd80bc1c2
12 changed files with 125 additions and 485 deletions

View File

@@ -1,11 +1,7 @@
package database
import (
"database/sql"
)
type Setting struct {
Name string
Name string `gorm:"PRIMARY_KEY"`
Value string
Default string
}
@@ -18,57 +14,14 @@ func NewSetting(name string, defaultValue string) Setting {
}
}
func initSettings(settings *DbTable[string, Setting]) {
addSettingIfNotExists("theme", "white", settings)
addSettingIfNotExists("order", "title", settings)
}
func addSettingIfNotExists(name string, value string, settings *DbTable[string, Setting]) {
_, exists := settings.Get(name)
if !exists {
settings.Set(name, NewSetting(name, value))
}
}
func updateSetting(db *sql.DB, s *Setting) error {
const cmd = "UPDATE Setting set Value = ? WHERE Name = ?"
_, err := db.Exec(cmd, s.Value, s.Name)
return err
}
func insertSetting(db *sql.DB, s *Setting) error {
const cmd = "INSERT INTO Setting(Name, Value, DefaultValue) VALUES(?, ?, ?)"
_, err := db.Exec(cmd, s.Name, s.Value, s.Default)
return err
}
func loadSettings(db *sql.DB) (map[string]Setting, error) {
const cmd = "SELECT Name, Value, DefaultValue from Setting"
rows, err := db.Query(cmd)
res := make(map[string]Setting)
for rows.Next() {
setting := Setting{}
if err = rows.Scan(&setting.Name, &setting.Value, &setting.Default); err != nil {
return nil, err
}
res[setting.Name] = setting
}
return res, err
}
type IgnoreDeleteError struct{}
func (m IgnoreDeleteError) Error() string {
return "Should ignore deletion"
}
func deleteSetting(db *sql.DB, key string) error {
const cmd = "UPDATE Setting set Value = DefaultValue WHERE Name = ?"
_, err := db.Exec(cmd, key)
if err != nil {
return err
}
return IgnoreDeleteError{}
}
//func initSettings(settings *DbTable[string, Setting]) {
// addSettingIfNotExists("theme", "white", settings)
// addSettingIfNotExists("order", "title", settings)
//}
//
//func addSettingIfNotExists(name string, value string, settings *DbTable[string, Setting]) {
// _, exists := settings.Get(name)
// if !exists {
// settings.Set(name, NewSetting(name, value))
// }
//}