Feat: add delete endpoints

This commit is contained in:
2025-12-07 22:26:55 +08:00
parent 1ce2174bdc
commit 1f313fc17d
5 changed files with 106 additions and 3 deletions

View File

@@ -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")

View File

@@ -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)
}

View File

@@ -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)
}

View File

@@ -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
})
}

View File

@@ -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
}