feat: handle template conflict error
This commit is contained in:
@@ -56,36 +56,21 @@ func fetchTemplate(c echo.Context) error {
|
||||
return c.JSON(http.StatusOK, template)
|
||||
}
|
||||
|
||||
func createOrUpdateTemplate(c echo.Context) error {
|
||||
mgr := templateManagerFrom(c)
|
||||
exists, err := mgr.hasTemplate(c.Request().Context(), c.Param("templateName"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return createTemplate(c)
|
||||
}
|
||||
|
||||
var body postTemplateRequestBody
|
||||
err = json.NewDecoder(c.Request().Body).Decode(&body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if body.ImageTag != nil || body.BuildArgs != nil {
|
||||
return buildTemplate(c, body)
|
||||
}
|
||||
|
||||
return updateTemplate(c, body)
|
||||
}
|
||||
|
||||
func createTemplate(c echo.Context) error {
|
||||
mgr := templateManagerFrom(c)
|
||||
name := c.Param("templateName")
|
||||
mgr := templateManagerFrom(c)
|
||||
|
||||
exists, err := mgr.hasTemplate(c.Request().Context(), name)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if exists {
|
||||
return echo.NewHTTPError(http.StatusConflict)
|
||||
}
|
||||
|
||||
var body createTemplateRequestBody
|
||||
err := json.NewDecoder(c.Request().Body).Decode(&body)
|
||||
if err != nil {
|
||||
if err = json.NewDecoder(c.Request().Body).Decode(&body); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -101,6 +86,29 @@ func createTemplate(c echo.Context) error {
|
||||
return c.JSON(http.StatusOK, createdTemplate)
|
||||
}
|
||||
|
||||
func updateOrBuildTemplate(c echo.Context) error {
|
||||
mgr := templateManagerFrom(c)
|
||||
exists, err := mgr.hasTemplate(c.Request().Context(), c.Param("templateName"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if !exists {
|
||||
return echo.NewHTTPError(http.StatusNotFound)
|
||||
}
|
||||
|
||||
var body postTemplateRequestBody
|
||||
err = json.NewDecoder(c.Request().Body).Decode(&body)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if body.ImageTag != nil || body.BuildArgs != nil {
|
||||
return buildTemplate(c, body)
|
||||
}
|
||||
|
||||
return updateTemplate(c, body)
|
||||
}
|
||||
|
||||
func updateTemplate(c echo.Context, body postTemplateRequestBody) error {
|
||||
name := c.Param("templateName")
|
||||
mgr := templateManagerFrom(c)
|
||||
|
@@ -9,7 +9,8 @@ func DefineRoutes(g *echo.Group, services service.Services) {
|
||||
g.Use(newTemplateManagerMiddleware(services))
|
||||
g.GET("/templates", fetchAllTemplates)
|
||||
g.GET("/templates/:templateName", fetchTemplate, validateTemplateName)
|
||||
g.POST("/templates/:templateName", createOrUpdateTemplate, validateTemplateName)
|
||||
g.PUT("/templates/:templateName", createTemplate, validateTemplateName)
|
||||
g.POST("/templates/:templateName", updateOrBuildTemplate, validateTemplateName)
|
||||
g.DELETE("/templates/:templateName", deleteTemplate, validateTemplateName)
|
||||
g.GET("/templates/:templateName/:filePath", fetchTemplateFile, validateTemplateName, validateTemplateFilePath)
|
||||
g.POST("/templates/:templateName/:filePath", updateTemplateFile, validateTemplateName, validateTemplateFilePath)
|
||||
|
@@ -41,6 +41,7 @@ type buildTemplateOptions struct {
|
||||
}
|
||||
|
||||
var errTemplateNotFound = errors.New("template not found")
|
||||
var errTemplateExists = errors.New("template already exists")
|
||||
var errBaseTemplateNotFound = errors.New("base template not found")
|
||||
var errTemplateFileNotFound = errors.New("template file not found")
|
||||
|
||||
|
Reference in New Issue
Block a user