feat(explorer): advance delete options for users
This commit is contained in:
parent
1c1cd9b342
commit
d67d0512f8
4 changed files with 16 additions and 4 deletions
|
@ -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…
Add table
Reference in a new issue