dockerfiles/anylink/server/dbdata/setting.go

100 lines
2.0 KiB
Go
Raw Normal View History

2021-06-08 20:45:26 +08:00
package dbdata
import (
2021-08-02 20:41:35 +08:00
"encoding/json"
2021-06-08 20:45:26 +08:00
"reflect"
2022-11-10 15:53:48 +08:00
2021-08-02 20:41:35 +08:00
"xorm.io/xorm"
2021-06-08 20:45:26 +08:00
)
2021-08-02 20:41:35 +08:00
type SettingInstall struct {
Installed bool `json:"installed"`
}
type SettingSmtp struct {
Host string `json:"host"`
Port int `json:"port"`
Username string `json:"username"`
Password string `json:"password"`
From string `json:"from"`
Encryption string `json:"encryption"`
}
2022-11-10 15:53:48 +08:00
type SettingAuditLog struct {
2023-04-26 22:17:10 +08:00
AuditInterval int `json:"audit_interval"`
LifeDay int `json:"life_day"`
ClearTime string `json:"clear_time"`
2022-11-10 15:53:48 +08:00
}
2021-08-02 20:41:35 +08:00
type SettingOther struct {
LinkAddr string `json:"link_addr"`
Banner string `json:"banner"`
2022-11-10 15:53:48 +08:00
Homeindex string `json:"homeindex"`
2021-08-02 20:41:35 +08:00
AccountMail string `json:"account_mail"`
}
2021-06-08 20:45:26 +08:00
func StructName(data interface{}) string {
ref := reflect.ValueOf(data)
s := &ref
if s.Kind() == reflect.Ptr {
e := s.Elem()
s = &e
}
name := s.Type().Name()
return name
}
2021-08-02 20:41:35 +08:00
func SettingSessAdd(sess *xorm.Session, data interface{}) error {
name := StructName(data)
v, _ := json.Marshal(data)
s := &Setting{Name: name, Data: v}
_, err := sess.InsertOne(s)
2021-06-08 20:45:26 +08:00
return err
}
2021-08-02 20:41:35 +08:00
func SettingSet(data interface{}) error {
name := StructName(data)
v, _ := json.Marshal(data)
s := &Setting{Data: v}
err := Update("name", name, s)
return err
2021-06-08 20:45:26 +08:00
}
2021-08-02 20:41:35 +08:00
func SettingGet(data interface{}) error {
name := StructName(data)
s := &Setting{Name: name}
err := One("name", name, s)
if err != nil {
return err
}
err = json.Unmarshal(s.Data, data)
return err
2021-06-08 20:45:26 +08:00
}
2022-11-10 15:53:48 +08:00
func SettingGetAuditLog() (SettingAuditLog, error) {
data := SettingAuditLog{}
err := SettingGet(&data)
if err == nil {
return data, err
}
if !CheckErrNotFound(err) {
return data, err
}
sess := xdb.NewSession()
defer sess.Close()
auditLog := SettingGetAuditLogDefault()
err = SettingSessAdd(sess, auditLog)
if err != nil {
return data, err
}
return auditLog, nil
}
func SettingGetAuditLogDefault() SettingAuditLog {
auditLog := SettingAuditLog{
LifeDay: 0,
ClearTime: "05:00",
}
return auditLog
}