65 lines
1.2 KiB
Go
65 lines
1.2 KiB
Go
package repository
|
|
|
|
import (
|
|
"encoding/json"
|
|
"gorm.io/gorm"
|
|
"wireguard-dashboard/client"
|
|
"wireguard-dashboard/model/entity"
|
|
"wireguard-dashboard/model/vo"
|
|
)
|
|
|
|
type system struct {
|
|
*gorm.DB
|
|
}
|
|
|
|
func System() system {
|
|
return system{
|
|
client.DB,
|
|
}
|
|
}
|
|
|
|
// GetConfigByCode
|
|
// @description:
|
|
// @receiver r
|
|
// @param code
|
|
// @return data
|
|
// @return err
|
|
func (r system) GetConfigByCode(code string) (data *entity.Setting, err error) {
|
|
err = r.Model(&entity.Setting{}).Where("code = ?", code).First(&data).Error
|
|
return
|
|
}
|
|
|
|
// GetServerSetting
|
|
// @description: 获取服务端全局配置
|
|
// @receiver r
|
|
// @return data
|
|
// @return err
|
|
func (r system) GetServerSetting() (data *vo.ServerSetting, err error) {
|
|
config, err := r.GetConfigByCode("SERVER_SETTING")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if err = json.Unmarshal([]byte(config.Data), &data); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
|
|
// Save
|
|
// @description: 新增/编辑配置
|
|
// @receiver r
|
|
// @param ent
|
|
// @return err
|
|
func (r system) Save(ent *entity.Setting) (err error) {
|
|
conf, err := r.GetConfigByCode(ent.Code)
|
|
// 新增
|
|
if err != nil || conf == nil {
|
|
return r.Model(&entity.Setting{}).Create(ent).Error
|
|
}
|
|
|
|
// 更新
|
|
return r.Model(&entity.Setting{}).Where("code = ?", ent.Code).Updates(&ent).Error
|
|
}
|