Feat: add delete endpoints
This commit is contained in:
@@ -104,8 +104,11 @@ var serveCmd = &cobra.Command{
|
||||
apiGroup := backend.NewGroup("/api").
|
||||
Use(midHandlers.CheckRefreshToken).
|
||||
Use(midHandlers.CheckAccessToken)
|
||||
apiGroup.GET("/images", apis.GetImages)
|
||||
apiGroup.DELETE("/alias/:id", apis.DeleteAlias)
|
||||
apiGroup.DELETE("/image/:id", apis.DeleteImage)
|
||||
apiGroup.GET("/aliases", apis.GetAliases)
|
||||
apiGroup.GET("/images", apis.GetImages)
|
||||
apiGroup.POST("/image", apis.PostImage)
|
||||
apiGroup.PUT("/image/:id/aliases", apis.PutImageAliases)
|
||||
|
||||
authGroup := backend.NewGroup("/auth")
|
||||
|
||||
@@ -2,7 +2,9 @@ package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"gitea.konchin.com/go2025/backend/middlewares"
|
||||
"gitea.konchin.com/go2025/backend/utils"
|
||||
"github.com/uptrace/bunrouter"
|
||||
)
|
||||
@@ -19,6 +21,26 @@ import (
|
||||
func (self *Handlers) DeleteAlias(
|
||||
w http.ResponseWriter, req bunrouter.Request,
|
||||
) error {
|
||||
// TODO
|
||||
ctx := req.Context()
|
||||
|
||||
rawAliasId := req.Param("id")
|
||||
aliasId, err := strconv.ParseInt(rawAliasId, 10, 64)
|
||||
if err != nil {
|
||||
return middlewares.HTTPError{
|
||||
StatusCode: http.StatusBadRequest,
|
||||
Message: "failed to parse aliasId",
|
||||
OriginError: err,
|
||||
}
|
||||
}
|
||||
|
||||
err = self.db.DeleteAlias(ctx, aliasId)
|
||||
if err != nil {
|
||||
return middlewares.HTTPError{
|
||||
StatusCode: http.StatusInternalServerError,
|
||||
Message: "failed to delete alias",
|
||||
OriginError: err,
|
||||
}
|
||||
}
|
||||
|
||||
return utils.Success(w)
|
||||
}
|
||||
|
||||
@@ -2,7 +2,9 @@ package api
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strconv"
|
||||
|
||||
"gitea.konchin.com/go2025/backend/middlewares"
|
||||
"gitea.konchin.com/go2025/backend/utils"
|
||||
"github.com/uptrace/bunrouter"
|
||||
)
|
||||
@@ -19,6 +21,26 @@ import (
|
||||
func (self *Handlers) DeleteImage(
|
||||
w http.ResponseWriter, req bunrouter.Request,
|
||||
) error {
|
||||
// TODO
|
||||
ctx := req.Context()
|
||||
|
||||
rawImageId := req.Param("id")
|
||||
imageId, err := strconv.ParseInt(rawImageId, 10, 64)
|
||||
if err != nil {
|
||||
return middlewares.HTTPError{
|
||||
StatusCode: http.StatusBadRequest,
|
||||
Message: "failed to parse imageId",
|
||||
OriginError: err,
|
||||
}
|
||||
}
|
||||
|
||||
err = self.db.DeleteImage(ctx, imageId)
|
||||
if err != nil {
|
||||
return middlewares.HTTPError{
|
||||
StatusCode: http.StatusInternalServerError,
|
||||
Message: "failed to delete image",
|
||||
OriginError: err,
|
||||
}
|
||||
}
|
||||
|
||||
return utils.Success(w)
|
||||
}
|
||||
|
||||
@@ -212,3 +212,49 @@ func (self *BunDatabase) InsertImage(
|
||||
Exec(ctx)
|
||||
return err
|
||||
}
|
||||
|
||||
func (self *BunDatabase) DeleteImage(
|
||||
ctx context.Context,
|
||||
imageId int64,
|
||||
) error {
|
||||
return self.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error {
|
||||
_, err := self.db.NewDelete().
|
||||
Model((*models.Image)(nil)).
|
||||
Where("id = ?", imageId).
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = self.db.NewDelete().
|
||||
Model((*models.AliasImage)(nil)).
|
||||
Where("image_id = ?", imageId).
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (self *BunDatabase) DeleteAlias(
|
||||
ctx context.Context,
|
||||
aliasId int64,
|
||||
) error {
|
||||
return self.db.RunInTx(ctx, nil, func(ctx context.Context, tx bun.Tx) error {
|
||||
_, err := self.db.NewDelete().
|
||||
Model((*models.Alias)(nil)).
|
||||
Where("id = ?", aliasId).
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = self.db.NewDelete().
|
||||
Model((*models.AliasImage)(nil)).
|
||||
Where("alias_id = ?", aliasId).
|
||||
Exec(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
@@ -47,4 +47,14 @@ type Database interface {
|
||||
ctx context.Context,
|
||||
image *models.Image,
|
||||
) error
|
||||
|
||||
DeleteImage(
|
||||
ctx context.Context,
|
||||
imageId int64,
|
||||
) error
|
||||
|
||||
DeleteAlias(
|
||||
ctx context.Context,
|
||||
aliasId int64,
|
||||
) error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user