diff --git a/package-lock.json b/package-lock.json index 94bb6dff..6f1e8193 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7276,7 +7276,7 @@ }, "packages/business-objects": { "name": "@dvelop-sdk/business-objects", - "version": "2.0.0", + "version": "2.0.1", "license": "Apache-2.0", "dependencies": { "@dvelop-sdk/core": "^2.2.0" diff --git a/packages/business-objects/package.json b/packages/business-objects/package.json index 47642036..cb740867 100644 --- a/packages/business-objects/package.json +++ b/packages/business-objects/package.json @@ -1,7 +1,7 @@ { "name": "@dvelop-sdk/business-objects", "description": "This package contains functionality for the BusinessObjects-App in the d.velop cloud.", - "version": "2.0.0", + "version": "2.0.1", "license": "Apache-2.0", "main": "lib/index.js", "types": "lib/index.d.ts", diff --git a/packages/business-objects/src/entities/get-entities/get-entities.spec.ts b/packages/business-objects/src/entities/get-entities/get-entities.spec.ts index 21590823..d526242c 100644 --- a/packages/business-objects/src/entities/get-entities/get-entities.spec.ts +++ b/packages/business-objects/src/entities/get-entities/get-entities.spec.ts @@ -1,5 +1,5 @@ import { DvelopContext, DvelopHttpResponse as HttpResponse } from "@dvelop-sdk/core"; -import { GetBoEntitiesParams, _getBoEntitiesDefaultTransformFunctionFactory, _getBoEntitiesFactory, GetEntitiesResultPage } from "./get-entities"; +import { GetBoEntitiesParams, _getBoEntitiesDefaultTransformFunctionFactory, _getBoEntitiesFactory, GetBoEntitiesResultPage } from "./get-entities"; describe("getBoEntitiesFactory", () => { @@ -74,7 +74,7 @@ describe("getBoEntitiesFactory", () => { mockHttpRequestFunction.mockResolvedValue({ data: response } as HttpResponse); const getBoEntities = _getBoEntitiesFactory(mockHttpRequestFunction, _getBoEntitiesDefaultTransformFunctionFactory(mockHttpRequestFunction)); - const result: GetEntitiesResultPage = await getBoEntities(context, params); + const result: GetBoEntitiesResultPage = await getBoEntities(context, params); response.value.forEach((entity: any, i: number) => { expect(result.value[i]).toHaveProperty("employeeid", entity.employeeid); @@ -99,7 +99,7 @@ describe("getBoEntitiesFactory", () => { mockHttpRequestFunction.mockResolvedValue({ data: response } as HttpResponse); const getBoEntities = _getBoEntitiesFactory(mockHttpRequestFunction, _getBoEntitiesDefaultTransformFunctionFactory(mockHttpRequestFunction)); - const result: GetEntitiesResultPage = await getBoEntities(context, params); + const result: GetBoEntitiesResultPage = await getBoEntities(context, params); expect(result).toHaveProperty("getNextPage"); @@ -134,7 +134,7 @@ describe("getBoEntitiesFactory", () => { mockHttpRequestFunction.mockResolvedValue({ data: response } as HttpResponse); const getBoEntities = _getBoEntitiesFactory(mockHttpRequestFunction, _getBoEntitiesDefaultTransformFunctionFactory(mockHttpRequestFunction)); - const result: GetEntitiesResultPage = await getBoEntities(context, params); + const result: GetBoEntitiesResultPage = await getBoEntities(context, params); expect(result).toHaveProperty("value"); expect(result.value).toHaveLength(0); diff --git a/packages/business-objects/src/entities/get-entities/get-entities.ts b/packages/business-objects/src/entities/get-entities/get-entities.ts index e4cd8658..14fb6ebe 100644 --- a/packages/business-objects/src/entities/get-entities/get-entities.ts +++ b/packages/business-objects/src/entities/get-entities/get-entities.ts @@ -16,11 +16,11 @@ export interface GetBoEntitiesParams { * Page of a searchResult. There might be more than one page. * @category Entity */ -export interface GetEntitiesResultPage { +export interface GetBoEntitiesResultPage { /** Array of entitiess found */ value: E[] /** Function that returns the next page. Undefined if there is none. */ - getNextPage?: () => Promise>; + getNextPage?: () => Promise>; } /** @@ -29,10 +29,10 @@ export interface GetEntitiesResultPage { * @internal * @category Entity */ -export function _getBoEntitiesDefaultTransformFunctionFactory(httpRequestFunction: (context: DvelopContext, config: HttpConfig) => Promise): (response: HttpResponse, context: DvelopContext, params: GetBoEntitiesParams) => GetEntitiesResultPage { +export function _getBoEntitiesDefaultTransformFunctionFactory(httpRequestFunction: (context: DvelopContext, config: HttpConfig) => Promise): (response: HttpResponse, context: DvelopContext, params: GetBoEntitiesParams) => GetBoEntitiesResultPage { return (response: HttpResponse, context: DvelopContext, params: GetBoEntitiesParams) => { - let result: GetEntitiesResultPage = { + let result: GetBoEntitiesResultPage = { value: response.data.value }; @@ -58,8 +58,8 @@ export function _getBoEntitiesDefaultTransformFunctionFactory(httpRequestFunc */ export function _getBoEntitiesFactory( httpRequestFunction: (context: DvelopContext, config: HttpConfig) => Promise, - transformFunction: (response: HttpResponse, context: DvelopContext, params: GetBoEntitiesParams) => GetEntitiesResultPage -): (context: DvelopContext, params: GetBoEntitiesParams) => Promise> { + transformFunction: (response: HttpResponse, context: DvelopContext, params: GetBoEntitiesParams) => GetBoEntitiesResultPage +): (context: DvelopContext, params: GetBoEntitiesParams) => Promise> { return async (context: DvelopContext, params: GetBoEntitiesParams) => { const response = await httpRequestFunction(context, { @@ -72,49 +72,64 @@ export function _getBoEntitiesFactory( } /** - * Returns all specified entities from a model. - * @template E Type for Entity. Defaults to `any`. + * Returns all specified entities from a model. This result might be partial due to the default page size. + * You can navigate to the next pages using the function ```getNextPage```. If the function is undefined, the page does not exist. * * @example * ```typescript * import { getBoEntities } from "@dvelop-sdk/business-objects"; * - * const employees = await getBoEntities({ + * const resultPage: GetEntitiesResultPage = await getBoEntities({ * systemBaseUri: "https://sacred-heart-hospital.d-velop.cloud", * authSessionId: "3f3c428d452" * },{ * modelName: "HOSPITALBASEDATA", - * pluralEntityName: "employees", + * pluralEntityName: "employees" * }); - * console.log(employees); // [{ employeeId: '1', firstName: 'John Micheal', lastName: 'Dorian', jobTitel: 'senior physician' }, { employeeId: '2', firstName: 'Christopher', lastName: 'Turk', jobTitel: 'chief surgeon' }] + * + * let employees = await resultPage.value; + * + * // Use this for paging + * while (resultPage.getNextPage) { + * const nextPage: GetBoEntitiesResultPage = await resultPage.getNextPage(); + * employees = employees.concat(nextPage.value); + * } * ``` * --- * You can also use generics: - * @example + * * @example * ```typescript * import { getBoEntities } from "@dvelop-sdk/business-objects"; * - * interface Employee { + * interface Employee { * employeeId: string; * firstName: string; * lastName: string; * jobTitel: string; * } - * - * const employees: Employee[] = await getBoEntities({ + * + * const resultPage: GetBoEntitiesResultPage = await getBoEntities({ * systemBaseUri: "https://sacred-heart-hospital.d-velop.cloud", * authSessionId: "3f3c428d452" - * },{ + * }, { * modelName: "HOSPITALBASEDATA", * pluralEntityName: "employees" * }); - * + * + * let employees: Employee[] = await resultPage.value; + * + * // Use this for paging + * while (resultPage.getNextPage) { + * const nextPage: GetBoEntitiesResultPage = await resultPage.getNextPage(); + * employees = employees.concat(nextPage.value); + * } + * * employees.forEach(e => console.log(e.lastName)); * // Dorian * // Turk * ``` */ /* istanbul ignore next */ -export async function getBoEntities(context: DvelopContext, params: GetBoEntitiesParams): Promise> { +export async function getBoEntities(context: DvelopContext, params: GetBoEntitiesParams): Promise> { return await _getBoEntitiesFactory(_defaultHttpRequestFunction, _getBoEntitiesDefaultTransformFunctionFactory(_defaultHttpRequestFunction))(context, params); } \ No newline at end of file diff --git a/packages/business-objects/src/index.ts b/packages/business-objects/src/index.ts index 292991b9..12d23f2b 100644 --- a/packages/business-objects/src/index.ts +++ b/packages/business-objects/src/index.ts @@ -29,7 +29,7 @@ export { DvelopContext, BadInputError, UnauthorizedError, ForbiddenError, NotFou export { BusinessObjectsError } from "./utils/http"; export * as internals from "./internal"; -export { GetBoEntitiesParams, getBoEntities, GetEntitiesResultPage } from "./entities/get-entities/get-entities"; +export { GetBoEntitiesParams, getBoEntities, GetBoEntitiesResultPage } from "./entities/get-entities/get-entities"; export { GetBoEntityParams, getBoEntity } from "./entities/get-entity/get-entity"; export { CreateBoEntityParams, createBoEntity } from "./entities/create-entity/create-entity"; export { UpdateBoEntityParams, updateBoEntity } from "./entities/update-entity/update-entity";