Files
APIPark/controller/publish/iml.go
T
2024-08-12 21:38:09 +08:00

133 lines
4.0 KiB
Go

package publish
import (
"strconv"
"github.com/APIParkLab/APIPark/module/publish"
"github.com/APIParkLab/APIPark/module/publish/dto"
"github.com/APIParkLab/APIPark/module/release"
dto2 "github.com/APIParkLab/APIPark/module/release/dto"
"github.com/gin-gonic/gin"
)
var (
_ IPublishController = (*imlPublishController)(nil)
)
type imlPublishController struct {
publishModule publish.IPublishModule `autowired:""`
releaseModule release.IReleaseModule `autowired:""`
}
func (c *imlPublishController) ReleaseDo(ctx *gin.Context, serviceId string, input *dto.ApplyOnReleaseInput) (*dto.Publish, error) {
newReleaseId, err := c.releaseModule.Create(ctx, serviceId, &dto2.CreateInput{
Version: input.Version,
Remark: input.VersionRemark,
})
if err != nil {
return nil, err
}
apply, err := c.publishModule.Apply(ctx, serviceId, &dto.ApplyInput{
Release: newReleaseId,
Remark: input.PublishRemark,
})
if err != nil {
return nil, err
}
err = c.publishModule.Accept(ctx, serviceId, apply.Id, "")
if err != nil {
c.releaseModule.Delete(ctx, serviceId, newReleaseId)
return nil, err
}
err = c.publishModule.Publish(ctx, serviceId, apply.Id)
if err != nil {
c.releaseModule.Delete(ctx, serviceId, newReleaseId)
return nil, err
}
err = c.publishModule.Publish(ctx, serviceId, apply.Id)
if err != nil {
c.releaseModule.Delete(ctx, serviceId, newReleaseId)
return nil, err
}
return apply, err
}
func (c *imlPublishController) PublishStatuses(ctx *gin.Context, serviceId string, id string) ([]*dto.PublishStatus, error) {
return c.publishModule.PublishStatuses(ctx, serviceId, id)
}
func (c *imlPublishController) ApplyOnRelease(ctx *gin.Context, serviceId string, input *dto.ApplyOnReleaseInput) (*dto.Publish, error) {
newReleaseId, err := c.releaseModule.Create(ctx, serviceId, &dto2.CreateInput{
Version: input.Version,
Remark: input.VersionRemark,
})
if err != nil {
return nil, err
}
apply, err := c.publishModule.Apply(ctx, serviceId, &dto.ApplyInput{
Release: newReleaseId,
Remark: input.PublishRemark,
})
if err != nil {
return nil, err
}
return apply, nil
}
func (c *imlPublishController) Apply(ctx *gin.Context, serviceId string, input *dto.ApplyInput) (*dto.Publish, error) {
apply, err := c.publishModule.Apply(ctx, serviceId, input)
if err != nil {
return nil, err
}
return apply, nil
}
func (c *imlPublishController) CheckPublish(ctx *gin.Context, serviceId string, releaseId string) (*dto.DiffOut, error) {
return c.publishModule.CheckPublish(ctx, serviceId, releaseId)
}
func (c *imlPublishController) Close(ctx *gin.Context, serviceId string, id string) error {
err := c.publishModule.Stop(ctx, serviceId, id)
if err != nil {
return err
}
return nil
}
func (c *imlPublishController) Stop(ctx *gin.Context, serviceId string, id string) error {
return c.publishModule.Stop(ctx, serviceId, id)
}
func (c *imlPublishController) Refuse(ctx *gin.Context, serviceId string, id string, input *dto.Comments) error {
return c.publishModule.Refuse(ctx, serviceId, id, input.Comments)
}
func (c *imlPublishController) Accept(ctx *gin.Context, serviceId string, id string, input *dto.Comments) error {
return c.publishModule.Accept(ctx, serviceId, id, input.Comments)
}
func (c *imlPublishController) Publish(ctx *gin.Context, serviceId string, id string) error {
return c.publishModule.Publish(ctx, serviceId, id)
}
func (c *imlPublishController) ListPage(ctx *gin.Context, serviceId string, page, pageSize string) ([]*dto.Publish, int, int, int64, error) {
pageNum, _ := strconv.Atoi(page)
pageSizeNum, _ := strconv.Atoi(pageSize)
if pageNum < 1 {
pageNum = 1
}
if pageSizeNum <= 0 {
pageSizeNum = 50
}
list, total, err := c.publishModule.List(ctx, serviceId, pageNum, pageSizeNum)
if err != nil {
return nil, 0, 0, 0, err
}
return list, pageNum, pageSizeNum, total, nil
}
func (c *imlPublishController) Detail(ctx *gin.Context, serviceId string, id string) (*dto.PublishDetail, error) {
return c.publishModule.Detail(ctx, serviceId, id)
}