anylink/server/dbdata/setting.go

65 lines
1.2 KiB
Go

package dbdata
import (
"encoding/json"
"reflect"
)
const (
InstallName = "Install"
InstallData = "OK"
)
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"`
}
type SettingOther struct {
LinkAddr string `json:"link_addr"`
Banner string `json:"banner"`
AccountMail string `json:"account_mail"`
}
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
}
func SettingAdd(data interface{}) error {
name := StructName(data)
v, _ := json.Marshal(data)
s := Setting{Name: name, Data: string(v)}
err := Add(&s)
return err
}
func SettingSet(data interface{}) error {
name := StructName(data)
v, _ := json.Marshal(data)
s := Setting{Data: string(v)}
err := Update("name", name, &s)
return err
}
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([]byte(s.Data), data)
return err
}