18215: Requests back only updated fields on collection update calls.
authorLucas Di Pentima <lucas.dipentima@curii.com>
Mon, 15 Nov 2021 18:59:53 +0000 (15:59 -0300)
committerLucas Di Pentima <lucas.dipentima@curii.com>
Mon, 15 Nov 2021 18:59:53 +0000 (15:59 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <lucas.dipentima@curii.com>

src/services/collection-service/collection-service.ts
src/services/common-service/common-resource-service.ts

index 92437806818eb33a77c23c8bd2c1183a453cf3d9..64c73cbfb293d956842db1bdffc8b12433dc6eb8 100644 (file)
@@ -33,7 +33,8 @@ export class CollectionService extends TrashableResourceService<CollectionResour
     }
 
     update(uuid: string, data: Partial<CollectionResource>) {
-        return super.update(uuid, { ...data, preserveVersion: true });
+        const select = Object.keys(data)
+        return super.update(uuid, { ...data, preserveVersion: true }, select);
     }
 
     async files(uuid: string) {
index 66e694a09b9f74d716416a223d7e8f5d76a98aa1..c6306779a9ee8cef4bb6eff287c485462f5e898a 100644 (file)
@@ -37,13 +37,16 @@ export class CommonResourceService<T extends Resource> extends CommonService<T>
         return super.create(payload);
     }
 
-    update(uuid: string, data: Partial<T>) {
+    update(uuid: string, data: Partial<T>, select?: string[]) {
         let payload: any;
         if (data !== undefined) {
             this.readOnlyFields.forEach( field => delete data[field] );
             payload = {
                 [this.resourceType.slice(0, -1)]: CommonService.mapKeys(snakeCase)(data),
             };
+            if (select !== undefined && select.length > 0) {
+                payload.select = ['uuid', ...select.map(field => snakeCase(field))];
+            };
         }
         return super.update(uuid, payload);
     }