feat(explorer): advance delete options for users

pull/1638/head
Aaron Liu 2 years ago
parent 1c1cd9b342
commit d67d0512f8

@ -34,6 +34,7 @@ type GroupOption struct {
SourceBatchSize int `json:"source_batch,omitempty"` SourceBatchSize int `json:"source_batch,omitempty"`
RedirectedSource bool `json:"redirected_source,omitempty"` RedirectedSource bool `json:"redirected_source,omitempty"`
Aria2BatchSize int `json:"aria2_batch,omitempty"` Aria2BatchSize int `json:"aria2_batch,omitempty"`
AdvanceDelete bool `json:"advance_delete,omitempty"`
} }
// GetGroupByID 用ID获取用户组 // GetGroupByID 用ID获取用户组

@ -111,6 +111,7 @@ func addDefaultGroups() {
SourceBatchSize: 1000, SourceBatchSize: 1000,
Aria2BatchSize: 50, Aria2BatchSize: 50,
RedirectedSource: true, RedirectedSource: true,
AdvanceDelete: true,
}, },
} }
if err := DB.Create(&defaultAdminGroup).Error; err != nil { if err := DB.Create(&defaultAdminGroup).Error; err != nil {

@ -41,6 +41,7 @@ type group struct {
CompressEnabled bool `json:"compress"` CompressEnabled bool `json:"compress"`
WebDAVEnabled bool `json:"webdav"` WebDAVEnabled bool `json:"webdav"`
SourceBatchSize int `json:"sourceBatch"` SourceBatchSize int `json:"sourceBatch"`
AdvanceDelete bool `json:"advanceDelete"`
} }
type tag struct { type tag struct {
@ -100,6 +101,7 @@ func BuildUser(user model.User) User {
CompressEnabled: user.Group.OptionsSerialized.ArchiveTask, CompressEnabled: user.Group.OptionsSerialized.ArchiveTask,
WebDAVEnabled: user.Group.WebDAVEnabled, WebDAVEnabled: user.Group.WebDAVEnabled,
SourceBatchSize: user.Group.OptionsSerialized.SourceBatchSize, SourceBatchSize: user.Group.OptionsSerialized.SourceBatchSize,
AdvanceDelete: user.Group.OptionsSerialized.AdvanceDelete,
}, },
Tags: buildTagRes(tags), Tags: buildTagRes(tags),
} }

@ -41,9 +41,11 @@ type ItemService struct {
// ItemIDService 处理多文件/目录相关服务字段值为HashID可通过Raw()方法获取原始ID // ItemIDService 处理多文件/目录相关服务字段值为HashID可通过Raw()方法获取原始ID
type ItemIDService struct { type ItemIDService struct {
Items []string `json:"items"` Items []string `json:"items"`
Dirs []string `json:"dirs"` Dirs []string `json:"dirs"`
Source *ItemService Source *ItemService
Force bool `json:"force"`
UnlinkOnly bool `json:"unlink"`
} }
// ItemCompressService 文件压缩任务服务 // ItemCompressService 文件压缩任务服务
@ -272,9 +274,15 @@ func (service *ItemIDService) Delete(ctx context.Context, c *gin.Context) serial
} }
defer fs.Recycle() defer fs.Recycle()
force, unlink := false, false
if fs.User.Group.OptionsSerialized.AdvanceDelete {
force = service.Force
unlink = service.UnlinkOnly
}
// 删除对象 // 删除对象
items := service.Raw() items := service.Raw()
err = fs.Delete(ctx, items.Dirs, items.Items, false, false) err = fs.Delete(ctx, items.Dirs, items.Items, force, unlink)
if err != nil { if err != nil {
return serializer.Err(serializer.CodeNotSet, err.Error(), err) return serializer.Err(serializer.CodeNotSet, err.Error(), err)
} }

Loading…
Cancel
Save