diff --git a/lib/model.ts b/lib/model.ts index ff0f962..3f4782c 100644 --- a/lib/model.ts +++ b/lib/model.ts @@ -15,6 +15,7 @@ import { ModelFieldsGetOpts, ModelExportDataOpts, RequestOptions, + ReadForViewOpts, } from "./types"; import { createSearchPayload, @@ -32,6 +33,7 @@ import { createPermReadPayload, createFieldsGetPayload, createExportDataPayload, + createReadForViewPayload, } from "./payloads"; export class Model { @@ -400,4 +402,28 @@ export class Model { options, }); } + + public async read_for_view( + data: ReadForViewOpts, + options?: RequestOptions, + ): Promise { + const { view_id, domain = [], context, version } = data; + const { model } = this; + const { database, token } = this.client; + + const payload = createReadForViewPayload({ + database: database!, + token: token!, + model, + view_id, + context, + domain, + version, + }); + + return await this.client._fetch({ + payload, + options, + }); + } } diff --git a/lib/payloads.ts b/lib/payloads.ts index 19e8c07..d731cf1 100644 --- a/lib/payloads.ts +++ b/lib/payloads.ts @@ -22,6 +22,7 @@ import { ButTreeOpenPayload, ModelFieldsGetPayload, ModelExportDataPayload, + ReadForViewPayload, } from "./types"; export const makeLoginTokenPayload = (options: LoginTokenPayload): Payload => { @@ -396,3 +397,29 @@ export const createExportDataPayload = ( context, ]; }; + +export const createReadForViewPayload = ( + options: ReadForViewPayload, +): Payload => { + const { + database, + token, + model, + domain, + view_id, + context = {}, + version, + } = options; + return [ + "execute", + database, + "token", + token, + model, + "read_for_view", + view_id, + domain, + version, + context, + ]; +}; diff --git a/lib/types.ts b/lib/types.ts index 2465792..5976038 100644 --- a/lib/types.ts +++ b/lib/types.ts @@ -231,3 +231,12 @@ export type ModelExportDataPayload = Database & ModelExportDataOpts; export type RequestOptions = any; + +export type ReadForViewOpts = { + domain?: any[]; + view_id: number; + context?: Context; + version?: number; +}; + +export type ReadForViewPayload = Database & Token & Model & ReadForViewOpts;