Files
crawlab/core/controllers/setting.go
2024-06-14 15:42:50 +08:00

85 lines
1.6 KiB
Go

package controllers
import (
"github.com/crawlab-team/crawlab/core/interfaces"
"github.com/crawlab-team/crawlab/core/models/delegate"
"github.com/crawlab-team/crawlab/core/models/models"
"github.com/crawlab-team/crawlab/core/models/service"
"github.com/gin-gonic/gin"
)
var SettingController *settingController
type settingController struct {
ListControllerDelegate
}
func (ctr *settingController) Get(c *gin.Context) {
// key
key := c.Param("id")
// model service
modelSvc, err := service.NewService()
if err != nil {
HandleErrorInternalServerError(c, err)
return
}
// setting
s, err := modelSvc.GetSettingByKey(key, nil)
if err != nil {
HandleErrorInternalServerError(c, err)
return
}
HandleSuccessWithData(c, s)
}
func (ctr *settingController) Put(c *gin.Context) {
// key
key := c.Param("id")
// settings
var s models.Setting
if err := c.ShouldBindJSON(&s); err != nil {
HandleErrorInternalServerError(c, err)
return
}
// model service
modelSvc, err := service.NewService()
if err != nil {
HandleErrorInternalServerError(c, err)
return
}
// setting
_s, err := modelSvc.GetSettingByKey(key, nil)
if err != nil {
HandleErrorInternalServerError(c, err)
return
}
// save
_s.Value = s.Value
if err := delegate.NewModelDelegate(_s).Save(); err != nil {
HandleErrorInternalServerError(c, err)
return
}
HandleSuccess(c)
}
func newSettingController() *settingController {
modelSvc, err := service.GetService()
if err != nil {
panic(err)
}
ctr := NewListControllerDelegate(ControllerIdSetting, modelSvc.GetBaseService(interfaces.ModelIdSetting))
return &settingController{
ListControllerDelegate: *ctr,
}
}