@@ -202,8 +202,11 @@ export class NamespaceResourcesService {
202202 ) ;
203203 }
204204
205- async duplicate ( userId : string , resourceId : string ) {
206- const resource = await this . get ( resourceId ) ;
205+ async duplicate ( userId : string , namespaceId : string , resourceId : string ) {
206+ const resource = await this . resourcesService . getResourceOrFail (
207+ namespaceId ,
208+ resourceId ,
209+ ) ;
207210 if ( ! resource . parentId ) {
208211 throw new BadRequestException ( 'Cannot duplicate root resource.' ) ;
209212 }
@@ -361,9 +364,9 @@ export class NamespaceResourcesService {
361364 // Self and child exclusions
362365 if ( excludeResourceId ) {
363366 const resourceChildren = await this . getSubResourcesByUser (
367+ userId ,
364368 namespaceId ,
365369 excludeResourceId ,
366- userId ,
367370 ) ;
368371 where . id = Not (
369372 In ( [
@@ -390,9 +393,9 @@ export class NamespaceResourcesService {
390393 }
391394
392395 async getSubResourcesByUser (
396+ userId : string ,
393397 namespaceId : string ,
394398 resourceId : string ,
395- userId : string ,
396399 ) : Promise < ResourceMetaDto [ ] > {
397400 const parents = await this . resourcesService . getParentResourcesOrFail (
398401 namespaceId ,
@@ -452,8 +455,8 @@ export class NamespaceResourcesService {
452455 ) ;
453456 const resources = [ ...parents , ...children , ...subChildren ] ;
454457 const permissionMap = await this . permissionsService . getCurrentPermissions (
455- namespaceId ,
456458 userId ,
459+ namespaceId ,
457460 resources ,
458461 ) ;
459462
@@ -494,7 +497,7 @@ export class NamespaceResourcesService {
494497 return count > 0 ? SpaceType . TEAM : SpaceType . PRIVATE ;
495498 }
496499
497- async getPath ( {
500+ async getResource ( {
498501 userId,
499502 namespaceId,
500503 resourceId,
@@ -503,7 +506,10 @@ export class NamespaceResourcesService {
503506 namespaceId : string ;
504507 resourceId : string ;
505508 } ) : Promise < ResourceDto > {
506- const resource = await this . get ( resourceId ) ;
509+ const resource = await this . resourcesService . getResourceOrFail (
510+ namespaceId ,
511+ resourceId ,
512+ ) ;
507513 if ( resource . namespaceId !== namespaceId ) {
508514 throw new NotFoundException ( 'Not found' ) ;
509515 }
@@ -541,18 +547,6 @@ export class NamespaceResourcesService {
541547 ) ;
542548 }
543549
544- async get ( id : string ) {
545- const resource = await this . resourceRepository . findOne ( {
546- where : {
547- id,
548- } ,
549- } ) ;
550- if ( ! resource ) {
551- throw new NotFoundException ( 'Resource not found.' ) ;
552- }
553- return resource ;
554- }
555-
556550 async update ( userId : string , resourceId : string , data : UpdateResourceDto ) {
557551 await this . resourcesService . updateResource (
558552 data . namespaceId ,
@@ -567,8 +561,11 @@ export class NamespaceResourcesService {
567561 ) ;
568562 }
569563
570- async delete ( userId : string , id : string ) {
571- const resource = await this . get ( id ) ;
564+ async delete ( userId : string , namespaceId : string , id : string ) {
565+ const resource = await this . resourcesService . getResourceOrFail (
566+ namespaceId ,
567+ id ,
568+ ) ;
572569 if ( ! resource . parentId ) {
573570 throw new BadRequestException ( 'Cannot delete root resource.' ) ;
574571 }
@@ -658,7 +655,10 @@ export class NamespaceResourcesService {
658655 const encodedName = encodeFileName ( fileName ) ;
659656 let resource : Resource ;
660657 if ( resourceId ) {
661- resource = await this . get ( resourceId ) ;
658+ resource = await this . resourcesService . getResourceOrFail (
659+ namespaceId ,
660+ resourceId ,
661+ ) ;
662662 if ( resource . resourceType !== ResourceType . FILE ) {
663663 throw new BadRequestException ( 'Resource is not a file.' ) ;
664664 }
@@ -714,7 +714,10 @@ export class NamespaceResourcesService {
714714
715715 let resource : Resource ;
716716 if ( resourceId ) {
717- resource = await this . get ( resourceId ) ;
717+ resource = await this . resourcesService . getResourceOrFail (
718+ namespaceId ,
719+ resourceId ,
720+ ) ;
718721 if ( resource . resourceType !== ResourceType . FILE ) {
719722 throw new BadRequestException ( 'Resource is not a file.' ) ;
720723 }
@@ -778,30 +781,17 @@ export class NamespaceResourcesService {
778781 return { fileStream, resource } ;
779782 }
780783
781- async listAllUserAccessibleResources (
782- namespaceId : string ,
784+ async getAllResourcesByUser (
783785 userId : string ,
786+ namespaceId : string ,
784787 includeRoot : boolean = false ,
785- ) {
786- const resources = await this . resourceRepository . find ( {
787- where : { namespaceId, deletedAt : IsNull ( ) } ,
788- } ) ;
789- const filteredResources = await this . permissionFilter (
790- namespaceId ,
788+ ) : Promise < ResourceMetaDto [ ] > {
789+ const resources = await this . permissionsService . filterResourcesByPermission (
791790 userId ,
792- resources . filter ( ( res ) => res . parentId !== null || includeRoot ) ,
793- ) ;
794-
795- // Load tags for filtered resources
796- const tagsMap = await this . getTagsForResources (
797791 namespaceId ,
798- filteredResources ,
792+ await this . resourcesService . getAllResources ( namespaceId ) ,
799793 ) ;
800-
801- return filteredResources . map ( ( resource ) => ( {
802- ...resource ,
803- tags : tagsMap . get ( resource . id ) || [ ] ,
804- } ) ) ;
794+ return resources . filter ( ( res ) => res . parentId !== null || includeRoot ) ;
805795 }
806796
807797 async listAllResources ( offset : number , limit : number ) {
0 commit comments