mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
- Refactored multiple controller methods to accept structured parameters for improved clarity and maintainability. - Consolidated error handling and response generation across various endpoints. - Updated function signatures to eliminate unnecessary context parameters and enhance type safety. - Improved consistency in response formatting and error handling across controllers. - Enhanced file handling methods to support multipart file uploads and directory operations more effectively.
78 lines
1.9 KiB
Go
78 lines
1.9 KiB
Go
package controllers
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/core/models/models"
|
|
"github.com/crawlab-team/crawlab/core/models/service"
|
|
"github.com/gin-gonic/gin"
|
|
"go.mongodb.org/mongo-driver/bson"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
)
|
|
|
|
type GetSettingParams struct {
|
|
Key string `path:"key" validate:"required"`
|
|
}
|
|
|
|
func GetSetting(_ *gin.Context, params *GetSettingParams) (response *Response[models.Setting], err error) {
|
|
// setting
|
|
s, err := service.NewModelService[models.Setting]().GetOne(bson.M{"key": params.Key}, nil)
|
|
if err != nil {
|
|
if err == mongo.ErrNoDocuments {
|
|
return GetDataResponse(models.Setting{})
|
|
}
|
|
return GetErrorResponse[models.Setting](err)
|
|
}
|
|
|
|
return GetDataResponse(*s)
|
|
}
|
|
|
|
type PostSettingParams struct {
|
|
Key string `path:"key" validate:"required"`
|
|
Data models.Setting `json:"data"`
|
|
}
|
|
|
|
func PostSetting(c *gin.Context, params *PostSettingParams) (response *Response[models.Setting], err error) {
|
|
s := params.Data
|
|
if s.Key == "" {
|
|
s.Key = params.Key
|
|
}
|
|
|
|
u := GetUserFromContext(c)
|
|
s.SetCreated(u.Id)
|
|
s.SetUpdated(u.Id)
|
|
|
|
id, err := service.NewModelService[models.Setting]().InsertOne(s)
|
|
if err != nil {
|
|
return GetErrorResponse[models.Setting](err)
|
|
}
|
|
s.Id = id
|
|
|
|
return GetDataResponse(s)
|
|
}
|
|
|
|
type PutSettingParams struct {
|
|
Key string `path:"key" validate:"required"`
|
|
Data models.Setting `json:"data"`
|
|
}
|
|
|
|
func PutSetting(c *gin.Context, params *PutSettingParams) (response *Response[models.Setting], err error) {
|
|
modelSvc := service.NewModelService[models.Setting]()
|
|
|
|
// setting
|
|
existingSetting, err := modelSvc.GetOne(bson.M{"key": params.Key}, nil)
|
|
if err != nil {
|
|
return GetErrorResponse[models.Setting](err)
|
|
}
|
|
|
|
u := GetUserFromContext(c)
|
|
|
|
// save
|
|
existingSetting.Value = params.Data.Value
|
|
existingSetting.SetUpdated(u.Id)
|
|
err = modelSvc.ReplaceOne(bson.M{"key": params.Key}, *existingSetting)
|
|
if err != nil {
|
|
return GetErrorResponse[models.Setting](err)
|
|
}
|
|
|
|
return GetDataResponse(*existingSetting)
|
|
}
|