mirror of https://github.com/cloudreve/Cloudreve
feat(dashboard): filter file by shared link, direct link, uploading status (#2667)
parent
91717b7c49
commit
13e774f27d
2
assets
2
assets
|
@ -1 +1 @@
|
||||||
Subproject commit 5a1665a96a96234fb7ea5fd5131b15ecebe127be
|
Subproject commit 2827c6bc2eddc44597f429d1a35c446c15aa7f30
|
|
@ -57,6 +57,9 @@ type (
|
||||||
UserID int
|
UserID int
|
||||||
Name string
|
Name string
|
||||||
StoragePolicyID int
|
StoragePolicyID int
|
||||||
|
HasMetadata string
|
||||||
|
Shared bool
|
||||||
|
HasDirectLink bool
|
||||||
}
|
}
|
||||||
|
|
||||||
MetadataFilter struct {
|
MetadataFilter struct {
|
||||||
|
@ -1098,6 +1101,18 @@ func (f *fileClient) FlattenListFiles(ctx context.Context, args *FlattenListFile
|
||||||
query = query.Where(file.NameContainsFold(args.Name))
|
query = query.Where(file.NameContainsFold(args.Name))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if args.HasMetadata != "" {
|
||||||
|
query = query.Where(file.HasMetadataWith(metadata.Name(args.HasMetadata)))
|
||||||
|
}
|
||||||
|
|
||||||
|
if args.Shared {
|
||||||
|
query = query.Where(file.HasSharesWith(share.DeletedAtIsNil()))
|
||||||
|
}
|
||||||
|
|
||||||
|
if args.HasDirectLink {
|
||||||
|
query = query.Where(file.HasDirectLinksWith(directlink.DeletedAtIsNil()))
|
||||||
|
}
|
||||||
|
|
||||||
query.Order(getFileOrderOption(&ListFileParameters{
|
query.Order(getFileOrderOption(&ListFileParameters{
|
||||||
PaginationArgs: args.PaginationArgs,
|
PaginationArgs: args.PaginationArgs,
|
||||||
})...)
|
})...)
|
||||||
|
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"github.com/cloudreve/Cloudreve/v4/pkg/filemanager/manager/entitysource"
|
"github.com/cloudreve/Cloudreve/v4/pkg/filemanager/manager/entitysource"
|
||||||
"github.com/cloudreve/Cloudreve/v4/pkg/hashid"
|
"github.com/cloudreve/Cloudreve/v4/pkg/hashid"
|
||||||
"github.com/cloudreve/Cloudreve/v4/pkg/serializer"
|
"github.com/cloudreve/Cloudreve/v4/pkg/serializer"
|
||||||
|
"github.com/cloudreve/Cloudreve/v4/pkg/setting"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/samber/lo"
|
"github.com/samber/lo"
|
||||||
)
|
)
|
||||||
|
@ -150,9 +151,12 @@ func (service *FileBatchService) Delete(c *gin.Context) serializer.Response {
|
||||||
}
|
}
|
||||||
|
|
||||||
const (
|
const (
|
||||||
fileNameCondition = "file_name"
|
fileNameCondition = "file_name"
|
||||||
fileUserCondition = "file_user"
|
fileUserCondition = "file_user"
|
||||||
filePolicyCondition = "file_policy"
|
filePolicyCondition = "file_policy"
|
||||||
|
fileMetadataCondition = "file_metadata"
|
||||||
|
fileSharedCondition = "file_shared"
|
||||||
|
fileDirectLinkCondition = "file_direct_link"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (service *AdminListService) Files(c *gin.Context) (*ListFileResponse, error) {
|
func (service *AdminListService) Files(c *gin.Context) (*ListFileResponse, error) {
|
||||||
|
@ -167,9 +171,12 @@ func (service *AdminListService) Files(c *gin.Context) (*ListFileResponse, error
|
||||||
ctx = context.WithValue(ctx, inventory.LoadFileDirectLink{}, true)
|
ctx = context.WithValue(ctx, inventory.LoadFileDirectLink{}, true)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
userID int
|
userID int
|
||||||
policyID int
|
policyID int
|
||||||
|
metadata string
|
||||||
|
shared bool
|
||||||
|
directLink bool
|
||||||
)
|
)
|
||||||
|
|
||||||
if service.Conditions[fileUserCondition] != "" {
|
if service.Conditions[fileUserCondition] != "" {
|
||||||
|
@ -186,6 +193,18 @@ func (service *AdminListService) Files(c *gin.Context) (*ListFileResponse, error
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if service.Conditions[fileMetadataCondition] != "" {
|
||||||
|
metadata = service.Conditions[fileMetadataCondition]
|
||||||
|
}
|
||||||
|
|
||||||
|
if service.Conditions[fileSharedCondition] != "" && setting.IsTrueValue(service.Conditions[fileSharedCondition]) {
|
||||||
|
shared = true
|
||||||
|
}
|
||||||
|
|
||||||
|
if service.Conditions[fileDirectLinkCondition] != "" && setting.IsTrueValue(service.Conditions[fileDirectLinkCondition]) {
|
||||||
|
directLink = true
|
||||||
|
}
|
||||||
|
|
||||||
res, err := fileClient.FlattenListFiles(ctx, &inventory.FlattenListFileParameters{
|
res, err := fileClient.FlattenListFiles(ctx, &inventory.FlattenListFileParameters{
|
||||||
PaginationArgs: &inventory.PaginationArgs{
|
PaginationArgs: &inventory.PaginationArgs{
|
||||||
Page: service.Page - 1,
|
Page: service.Page - 1,
|
||||||
|
@ -196,6 +215,9 @@ func (service *AdminListService) Files(c *gin.Context) (*ListFileResponse, error
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
StoragePolicyID: policyID,
|
StoragePolicyID: policyID,
|
||||||
Name: service.Conditions[fileNameCondition],
|
Name: service.Conditions[fileNameCondition],
|
||||||
|
HasMetadata: metadata,
|
||||||
|
Shared: shared,
|
||||||
|
HasDirectLink: directLink,
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue