appidea-restapi/modules/serversettings/server_settings.go

71 lines
1.4 KiB
Go

package serversettings
import (
"strconv"
"git.umbach.dev/app-idea/rest-api/modules/database"
log "github.com/sirupsen/logrus"
)
type ServerSettings struct {
ExpiredTime int64
UsernameMinLen int64
UsernameMaxLen int64
EmailMinLen int64
EmailMaxLen int64
PasswordMinLen int64
PasswordMaxLen int64
}
var Settings ServerSettings
func LoadServerSettings() {
log.Debug("load server settings from db")
rows, err := database.DB.Raw("SELECT name, value FROM server_settings").Rows()
if err != nil {
log.Fatal("failed to load server settings:", err)
}
defer rows.Close()
var (
name string
value string
)
for rows.Next() {
rows.Scan(&name, &value)
log.Debugln("server setting:", name, value)
switch name {
case "expired_time":
Settings.ExpiredTime = stringToInt(value)
case "username_min_len":
Settings.UsernameMinLen = stringToInt(value)
case "username_max_len":
Settings.UsernameMaxLen = stringToInt(value)
case "email_min_len":
Settings.EmailMinLen = stringToInt(value)
case "email_max_len":
Settings.EmailMaxLen = stringToInt(value)
case "password_min_len":
Settings.PasswordMinLen = stringToInt(value)
case "password_max_len":
Settings.PasswordMaxLen = stringToInt(value)
}
}
}
func stringToInt(s string) int64 {
n, err := strconv.ParseInt(s, 0, 64)
if err != nil {
log.Fatalln("failed to parse server setting: ", err)
}
return n
}