71 lines
1.4 KiB
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
|
|
}
|