package controllers import ( "lokideploy/dto" "lokideploy/models" "lokideploy/services" "lokideploy/utils" "github.com/gin-gonic/gin" ) type DeploymentController struct { service *services.DeploymentService } func NewDeploymentController() *DeploymentController { return &DeploymentController{service: services.NewDeploymentService()} } func (ctrl *DeploymentController) Create(c *gin.Context) { var req dto.CreateDeploymentRequest if !utils.BindAndValidate(c, &req) { return } deployment, err := ctrl.service.Create(&services.CreateDeploymentRequest{ Name: req.Name, Description: req.Description, Version: req.Version, Mode: req.Mode, ClusterID: req.ClusterID, HostID: req.HostID, Namespace: req.Namespace, StorageConfigID: req.StorageConfigID, AuthEnabled: req.AuthEnabled, RetentionDays: req.RetentionDays, Replicas: req.Replicas, ResourcesCPU: req.ResourcesCPU, ResourcesMem: req.ResourcesMem, StorageSize: req.StorageSize, }) if err != nil { utils.Error(c, 400, err.Error()) return } utils.Success(c, models.SanitizedJSON(deployment)) } func (ctrl *DeploymentController) Get(c *gin.Context) { id, err := utils.IntParam(c, "id") if err != nil { utils.BadRequest(c, "ID 无效") return } deployment, err := ctrl.service.Get(uint(id)) if err != nil { utils.NotFound(c, "部署不存在") return } utils.Success(c, models.SanitizedJSON(deployment)) } func (ctrl *DeploymentController) List(c *gin.Context) { page, pageSize := utils.Pagination(c) deployments, total, err := ctrl.service.List(page, pageSize) if err != nil { utils.Error(c, 500, err.Error()) return } utils.Success(c, utils.PageData{ List: models.SanitizedJSON(deployments), Total: total, Page: page, PageSize: pageSize, }) } func (ctrl *DeploymentController) Update(c *gin.Context) { id, err := utils.IntParam(c, "id") if err != nil { utils.BadRequest(c, "ID 无效") return } var updates map[string]interface{} if !utils.BindAndValidate(c, &updates) { return } if err := ctrl.service.Update(uint(id), updates); err != nil { utils.Error(c, 400, err.Error()) return } utils.Success(c, gin.H{"message": "updated"}) } func (ctrl *DeploymentController) Delete(c *gin.Context) { id, err := utils.IntParam(c, "id") if err != nil { utils.BadRequest(c, "ID 无效") return } if err := ctrl.service.Delete(uint(id)); err != nil { utils.Error(c, 400, err.Error()) return } utils.Success(c, gin.H{"message": "deleted"}) } func (ctrl *DeploymentController) Deploy(c *gin.Context) { id, err := utils.IntParam(c, "id") if err != nil { utils.BadRequest(c, "ID 无效") return } if err := ctrl.service.StartDeploy(uint(id)); err != nil { utils.Error(c, 400, err.Error()) return } utils.Success(c, gin.H{"message": "deployment started"}) } func (ctrl *DeploymentController) Stop(c *gin.Context) { id, err := utils.IntParam(c, "id") if err != nil { utils.BadRequest(c, "ID 无效") return } if err := ctrl.service.StopDeployment(uint(id)); err != nil { utils.Error(c, 400, err.Error()) return } utils.Success(c, gin.H{"message": "deployment stopped"}) } func (ctrl *DeploymentController) Restart(c *gin.Context) { id, err := utils.IntParam(c, "id") if err != nil { utils.BadRequest(c, "ID 无效") return } if err := ctrl.service.RestartDeployment(uint(id)); err != nil { utils.Error(c, 400, err.Error()) return } utils.Success(c, gin.H{"message": "deployment restarted"}) } func (ctrl *DeploymentController) GetLogs(c *gin.Context) { id, err := utils.IntParam(c, "id") if err != nil { utils.BadRequest(c, "ID 无效") return } page, pageSize := utils.Pagination(c) logs, total, err := ctrl.service.GetLogs(uint(id), page, pageSize) if err != nil { utils.Error(c, 500, err.Error()) return } utils.Success(c, utils.PageData{ List: logs, Total: total, Page: page, PageSize: pageSize, }) } func (ctrl *DeploymentController) GetStats(c *gin.Context) { stats, err := ctrl.service.GetStats() if err != nil { utils.Error(c, 500, err.Error()) return } utils.Success(c, stats) }