From 016837f466aeb46cd6e2e64c6b8e401896fc838f Mon Sep 17 00:00:00 2001 From: Eric Tuvesson Date: Tue, 12 Nov 2024 15:50:49 +0100 Subject: [PATCH] feat(runtime): Add "keys" and "excludeKeys" to fetch record api (#79) Adding support for some more options when fetching a record. https://github.com/parse-community/parse-server/blob/91f9aca25bc6212ae27aac7af328ee1f19f058c8/src/Routers/ClassesRouter.js#L60-L68 --- packages/noodl-runtime/src/api/cloudstore.js | 12 ++++++++++++ packages/noodl-runtime/src/api/records.js | 6 +++++- .../static/viewer/global.d.ts.keep | 3 +++ .../static/viewer/global.d.ts.keep | 3 +++ 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/packages/noodl-runtime/src/api/cloudstore.js b/packages/noodl-runtime/src/api/cloudstore.js index d334496..4c586d5 100644 --- a/packages/noodl-runtime/src/api/cloudstore.js +++ b/packages/noodl-runtime/src/api/cloudstore.js @@ -263,7 +263,9 @@ class CloudStore { * @param {{ * objectId: string; * collection: string; + * keys?: string[] | string; * include?: string[] | string; + * excludeKeys?: string[] | string; * success: (data: unknown) => void; * error: (error: unknown) => void; * }} options @@ -275,6 +277,16 @@ class CloudStore { args.push('include=' + (Array.isArray(options.include) ? options.include.join(',') : options.include)); } + if (options.keys) { + args.push('keys=' + (Array.isArray(options.keys) ? options.keys.join(',') : options.keys)); + } + + if (options.excludeKeys) { + args.push( + 'excludeKeys=' + (Array.isArray(options.excludeKeys) ? options.excludeKeys.join(',') : options.excludeKeys) + ); + } + this._makeRequest( '/classes/' + options.collection + '/' + options.objectId + (args.length > 0 ? '?' + args.join('&') : ''), { diff --git a/packages/noodl-runtime/src/api/records.js b/packages/noodl-runtime/src/api/records.js index 323f8b8..a9730a3 100644 --- a/packages/noodl-runtime/src/api/records.js +++ b/packages/noodl-runtime/src/api/records.js @@ -112,7 +112,9 @@ function createRecordsAPI(modelScope) { * @param {string | { getId(): string; }} objectOrId * @param {{ * className: string; + * keys?: string[] | string; * include?: string[] | string; + * excludeKeys?: string[] | string; * }} options * @returns {Promise} */ @@ -129,7 +131,9 @@ function createRecordsAPI(modelScope) { cloudstore().fetch({ collection: className, objectId: objectOrId, - include: options ? options.include : undefined, + keys: options?.keys, + include: options?.include, + excludeKeys: options?.excludeKeys, success: function (response) { const record = cloudstore()._fromJSON(response, className); resolve(record); diff --git a/packages/noodl-viewer-cloud/static/viewer/global.d.ts.keep b/packages/noodl-viewer-cloud/static/viewer/global.d.ts.keep index 1a8c715..39a6fa6 100644 --- a/packages/noodl-viewer-cloud/static/viewer/global.d.ts.keep +++ b/packages/noodl-viewer-cloud/static/viewer/global.d.ts.keep @@ -227,6 +227,9 @@ declare namespace Noodl { objectOrId: string | { getId(): string; }, options?: { className?: RecordClassName; + keys?: string[] | string; + include?: string[] | string; + excludeKeys?: string[] | string; } ): Promise; diff --git a/packages/noodl-viewer-react/static/viewer/global.d.ts.keep b/packages/noodl-viewer-react/static/viewer/global.d.ts.keep index 5461b82..613e606 100644 --- a/packages/noodl-viewer-react/static/viewer/global.d.ts.keep +++ b/packages/noodl-viewer-react/static/viewer/global.d.ts.keep @@ -274,6 +274,9 @@ declare namespace Noodl { objectOrId: string | { getId(): string; }, options?: { className?: RecordClassName; + keys?: string[] | string; + include?: string[] | string; + excludeKeys?: string[] | string; } ): Promise;