aeus-admin/service/setting.go

61 lines
1.2 KiB
Go

package service
import (
"context"
"git.nobla.cn/golang/aeus-admin/models"
"git.nobla.cn/golang/aeus-admin/pb"
"git.nobla.cn/golang/aeus/pkg/cache"
"gorm.io/gorm"
)
type (
settingOptions struct {
db *gorm.DB
cache cache.Cache
}
SettingOption func(o *settingOptions)
)
type SettingService struct {
opts *settingOptions
}
func WithSettingCache(cache cache.Cache) SettingOption {
return func(o *settingOptions) {
o.cache = cache
}
}
func WithSettingDB(db *gorm.DB) SettingOption {
return func(o *settingOptions) {
o.db = db
}
}
func (s *SettingService) GetSetting(ctx context.Context, req *pb.GetSettingRequest) (res *pb.GetSettingResponse, err error) {
tx := s.opts.db.WithContext(ctx)
values := make([]*models.Setting, 0)
if err = tx.Find(&values).Error; err != nil {
return
}
res = &pb.GetSettingResponse{
Data: make([]*pb.SettingItem, 0, len(values)),
}
for _, v := range values {
res.Data = append(res.Data, &pb.SettingItem{
Name: v.Name,
Value: v.Value,
})
}
return
}
func NewSettingService(cbs ...SettingOption) *SettingService {
opts := &settingOptions{}
for _, cb := range cbs {
cb(opts)
}
return &SettingService{}
}