feat: implement batch delete service

pull/3356/head
scholar7r 5 days ago
parent 0f2f35d7d4
commit 309a1cbf4d

@ -72,6 +72,16 @@ func DeleteShare(c *gin.Context) {
c.JSON(200, serializer.Response{})
}
func BatchDeleteShare(c *gin.Context) {
service := ParametersFromContext[*share.BatchDeleteShareService](c, share.BatchDeleteParamCtx{})
err := service.Delete(c)
if err != nil {
c.JSON(200, serializer.Err(c, err))
}
c.JSON(200, serializer.Response{})
}
func ShareRedirect(c *gin.Context) {
service := ParametersFromContext[*share.ShortLinkRedirectService](c, share.ShortLinkRedirectParamCtx{})
c.Redirect(http.StatusFound, service.RedirectTo(c))

@ -38,7 +38,6 @@ func InitRouter(dep dependency.Dep) *gin.Engine {
l.Info("Current running mode: Slave.")
return initSlaveRouter(dep)
}
func newGinEngine(dep dependency.Dep) *gin.Engine {
@ -842,6 +841,12 @@ func initMasterRouter(dep dependency.Dep) *gin.Engine {
middleware.HashID(hashid.ShareID),
controllers.DeleteShare,
)
share.DELETE("",
middleware.LoginRequired(),
middleware.RequiredScopes(types.ScopeSharesWrite),
controllers.FromJSON[sharesvc.BatchDeleteShareService](sharesvc.BatchDeleteParamCtx{}),
controllers.BatchDeleteShare,
)
//// 获取README文本文件内容
//share.GET("readme/:id",
// middleware.CheckShareUnlocked(),

@ -27,8 +27,35 @@ type (
ShowReadMe bool `json:"show_readme"`
}
ShareCreateParamCtx struct{}
BatchDeleteShareService struct {
ShareIDs []string `json:"ids" binding:"required"`
}
BatchDeleteParamCtx struct{}
)
func (s *BatchDeleteShareService) Delete(c *gin.Context) error {
dep := dependency.FromContext(c)
shareClient := dep.ShareClient()
var shareIDs []int
for _, v := range s.ShareIDs {
share, err := shareClient.GetByHashID(c, v)
if err != nil {
return err
}
shareIDs = append(shareIDs, share.ID)
}
if err := shareClient.DeleteBatch(c, shareIDs); err != nil {
return serializer.NewError(serializer.CodeDBError, "Failed to delete shares", err)
}
return nil
}
// Upsert 创建或更新分享
func (service *ShareCreateService) Upsert(c *gin.Context, existed int) (string, error) {
dep := dependency.FromContext(c)

Loading…
Cancel
Save