MCPcopy
hub / github.com/cloudreve/cloudreve / CreateFolder

Method CreateFolder

inventory/file.go:1064–1103  ·  view source on GitHub ↗
(ctx context.Context, root *ent.File, args *CreateFolderParameters)

Source from the content-addressed store, hash-verified

1062}
1063
1064func (f *fileClient) CreateFolder(ctx context.Context, root *ent.File, args *CreateFolderParameters) (*ent.File, error) {
1065 stm := f.client.File.
1066 Create().
1067 SetOwnerID(args.Owner).
1068 SetType(int(types.FileTypeFolder)).
1069 SetIsSymbolic(args.IsSymbolic).
1070 SetName(args.Name)
1071 if root != nil {
1072 stm.SetParent(root).SetType(int(types.FileTypeFolder))
1073 }
1074
1075 fid, err := stm.OnConflict(sql.ConflictColumns(file.FieldFileChildren, file.FieldName)).Ignore().ID(ctx)
1076 if err != nil {
1077 return nil, fmt.Errorf("failed to create folder: %w", err)
1078 }
1079
1080 newFolder, err := f.client.File.Get(ctx, fid)
1081 if err != nil {
1082 return nil, fmt.Errorf("failed to get folder: %w", err)
1083 }
1084
1085 if len(args.Metadata) > 0 {
1086 _, err := f.client.Metadata.
1087 CreateBulk(lo.MapToSlice(args.Metadata, func(key, value string) *ent.MetadataCreate {
1088 _, isPrivate := args.MetadataPrivateMask[key]
1089 return f.client.Metadata.Create().
1090 SetName(key).
1091 SetValue(value).
1092 SetFile(newFolder).
1093 SetIsPublic(!isPrivate)
1094 })...).
1095 Save(ctx)
1096 if err != nil {
1097 return nil, fmt.Errorf("failed to create metadata: %v", err)
1098 }
1099 }
1100
1101 return newFolder, err
1102
1103}
1104
1105func (f *fileClient) Rename(ctx context.Context, original *ent.File, newName string) (*ent.File, error) {
1106 return f.client.File.UpdateOne(original).SetName(newName).Save(ctx)

Callers

nothing calls this directly

Calls 15

CreateMethod · 0.65
SetParentMethod · 0.65
IDMethod · 0.65
GetMethod · 0.65
SetNameMethod · 0.45
SetIsSymbolicMethod · 0.45
SetTypeMethod · 0.45
SetOwnerIDMethod · 0.45
IgnoreMethod · 0.45
OnConflictMethod · 0.45
SaveMethod · 0.45
CreateBulkMethod · 0.45

Tested by

no test coverage detected