Refactor AncestorService to hide recursion implementation and give more meaningful...
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 10 Dec 2018 09:26:55 +0000 (10:26 +0100)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 10 Dec 2018 09:26:55 +0000 (10:26 +0100)
Feature #14553

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

src/services/ancestors-service/ancestors-service.ts

index 697cd8fd246e5b4ae2d113f4f12c09195d34ca97..d635145522f64b1710c772bc5e9c08dfece80253 100644 (file)
@@ -14,21 +14,25 @@ export class AncestorService {
         private userService: UserService
     ) { }
 
-    async ancestors(uuid: string, rootUuid: string, previousUuid = ''): Promise<Array<UserResource | GroupResource>> {
+    async ancestors(startUuid: string, endUuid: string): Promise<Array<UserResource | GroupResource>> {
+        return this._ancestors(startUuid, endUuid);
+    }
+
+    private async _ancestors(startUuid: string, endUuid: string, previousUuid = ''): Promise<Array<UserResource | GroupResource>> {
 
-        if (uuid === previousUuid) {
+        if (startUuid === previousUuid) {
             return [];
         }
 
-        const service = this.getService(extractUuidObjectType(uuid));
+        const service = this.getService(extractUuidObjectType(startUuid));
         if (service) {
             try {
-                const resource = await service.get(uuid);
-                if (uuid === rootUuid) {
+                const resource = await service.get(startUuid);
+                if (startUuid === endUuid) {
                     return [resource];
                 } else {
                     return [
-                        ...await this.ancestors(resource.ownerUuid, rootUuid, uuid),
+                        ...await this._ancestors(resource.ownerUuid, endUuid, startUuid),
                         resource
                     ];
                 }