Files
OpenFlare/openflare-server/internal/controller/pages.go
T
2026-06-06 16:50:24 +08:00

171 lines
3.6 KiB
Go

package controller
import (
"github.com/rain-kl/openflare/openflare-server/internal/common/response"
"github.com/rain-kl/openflare/openflare-server/internal/controller/bind"
"github.com/rain-kl/openflare/openflare-server/internal/service"
"github.com/gin-gonic/gin"
)
func ListPagesProjects(c *gin.Context) {
projects, err := service.ListPagesProjects()
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, projects)
}
func GetPagesProject(c *gin.Context) {
id, ok := bind.IDParam(c)
if !ok {
return
}
project, err := service.GetPagesProject(id)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, project)
}
func CreatePagesProject(c *gin.Context) {
var input service.PagesProjectInput
if !bind.JSON(c, &input) {
return
}
project, err := service.CreatePagesProject(input)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, project)
}
func UpdatePagesProject(c *gin.Context) {
id, ok := bind.IDParam(c)
if !ok {
return
}
var input service.PagesProjectInput
if !bind.JSON(c, &input) {
return
}
project, err := service.UpdatePagesProject(id, input)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, project)
}
func DeletePagesProject(c *gin.Context) {
id, ok := bind.IDParam(c)
if !ok {
return
}
if err := service.DeletePagesProject(id); err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, nil)
}
func ListPagesDeployments(c *gin.Context) {
id, ok := bind.IDParam(c)
if !ok {
return
}
deployments, err := service.ListPagesProjectDeployments(id)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, deployments)
}
func UploadPagesDeployment(c *gin.Context) {
id, ok := bind.IDParam(c)
if !ok {
return
}
file, err := c.FormFile("package")
if err != nil {
response.RespondBadRequest(c, "缺少 Pages 部署包")
return
}
deployment, err := service.UploadPagesDeployment(
id,
file,
c.PostForm("root_dir"),
c.PostForm("entry_file"),
c.GetString("username"),
)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, deployment)
}
func ActivatePagesDeployment(c *gin.Context) {
projectID, ok := bind.IDParam(c)
if !ok {
return
}
deploymentID, ok := bind.IDParamByName(c, "deployment_id")
if !ok {
return
}
project, err := service.ActivatePagesDeployment(projectID, deploymentID)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, project)
}
func DeletePagesDeployment(c *gin.Context) {
projectID, ok := bind.IDParam(c)
if !ok {
return
}
deploymentID, ok := bind.IDParamByName(c, "deployment_id")
if !ok {
return
}
if err := service.DeletePagesDeployment(projectID, deploymentID); err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, nil)
}
func ListPagesDeploymentFiles(c *gin.Context) {
deploymentID, ok := bind.IDParamByName(c, "deployment_id")
if !ok {
return
}
files, err := service.ListPagesDeploymentFiles(deploymentID)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
response.RespondSuccess(c, files)
}
func AgentDownloadPagesDeploymentPackage(c *gin.Context) {
deploymentID, ok := bind.IDParamByName(c, "deployment_id")
if !ok {
return
}
filePath, fileName, err := service.GetPagesDeploymentPackagePath(deploymentID)
if err != nil {
response.RespondFailure(c, err.Error())
return
}
c.Header("Content-Disposition", "attachment; filename="+fileName)
c.File(filePath)
}