feat: implement getRecordsByAppId method
This commit is contained in:
@@ -12,6 +12,7 @@ import { FileInfo } from './FileInfo';
|
||||
import { FormulaField } from './FormulaField';
|
||||
import { GetPagedAppsResponse } from './GetPagedAppsResponse';
|
||||
import { GetPagedFieldsResponse } from './GetPagedFieldsResponse';
|
||||
import { GetPagedRecordsResponse } from './GetPagedRecordsResponse';
|
||||
import { GetPagedReportsResponse } from './GetPagedReportsResponse';
|
||||
import { ListField } from './ListField';
|
||||
import { ListItemResponse } from './ListItemResponse';
|
||||
@@ -330,6 +331,39 @@ export class ApiResponse<T> {
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @method asGetPagedRecordsResponseType - Converts the ApiResponse to an ApiResponse<GetPagedRecordsResponse>.
|
||||
* @returns {ApiResponse<GetPagedRecordsResponse>} - An ApiResponse<GetPagedRecordsResponse>.
|
||||
*/
|
||||
public asGetPagedRecordsResponseType(): ApiResponse<GetPagedRecordsResponse> {
|
||||
const apiResponse = this as ApiResponse<any>;
|
||||
|
||||
const records = apiResponse.data.items.map((item: any) => {
|
||||
const recordValues = item.fieldData.map((fieldData: any) => {
|
||||
return new RecordValue(
|
||||
fieldData.type,
|
||||
fieldData.fieldId,
|
||||
fieldData.value
|
||||
);
|
||||
});
|
||||
return new Record(item.appId, item.recordId, recordValues);
|
||||
});
|
||||
|
||||
const getPagedRecordsResponse = new GetPagedRecordsResponse(
|
||||
records,
|
||||
apiResponse.data.pageNumber,
|
||||
apiResponse.data.pageSize,
|
||||
apiResponse.data.totalPages,
|
||||
apiResponse.data.totalRecords
|
||||
);
|
||||
|
||||
return new ApiResponse<GetPagedRecordsResponse>(
|
||||
apiResponse.statusCode,
|
||||
apiResponse.message,
|
||||
getPagedRecordsResponse
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @method asRecordType - Converts the ApiResponse to an ApiResponse<Record>.
|
||||
* @returns {ApiResponse<Record>} - An ApiResponse<Record>.
|
||||
|
||||
@@ -22,6 +22,8 @@ import { type GetPagedReportsResponse } from './GetPagedReportsResponse';
|
||||
import { type ReportData } from './ReportData';
|
||||
import { type Record } from './Record';
|
||||
import { type GetRecordRequest } from './GetRecordRequest';
|
||||
import { type GetRecordsByAppIdRequest } from './GetRecordsByAppIdRequest';
|
||||
import { type GetPagedRecordsResponse } from './GetPagedRecordsResponse';
|
||||
|
||||
/**
|
||||
* @class OnspringClient - A client that can communicate with the Onspring API.
|
||||
@@ -310,6 +312,30 @@ export class OnspringClient {
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* @method getRecordByAppId - Gets records by an app id.
|
||||
* @param {GetRecordsByAppIdRequest} request - The request that will be used to get the records.
|
||||
* @returns {Promise<ApiResponse<GetPagedRecordsResponse>>} - A promise that resolves to an ApiResponse of type GetPagedRecordsResponse.
|
||||
*/
|
||||
public async getRecordByAppId(
|
||||
request: GetRecordsByAppIdRequest
|
||||
): Promise<ApiResponse<GetPagedRecordsResponse>> {
|
||||
const { appId, pagingRequest, fieldIds, dataFormat } = request;
|
||||
const endpoint = EndpointFactory.getRecordsByAppIdEndpoint(appId);
|
||||
const params = {
|
||||
...pagingRequest,
|
||||
fieldIds: fieldIds.join(','),
|
||||
dataFormat,
|
||||
};
|
||||
const apiResponse = await this.get<any>(endpoint, { params });
|
||||
|
||||
if (apiResponse.isSuccessful === false) {
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
return apiResponse.asGetPagedRecordsResponseType();
|
||||
}
|
||||
|
||||
/**
|
||||
* @method getRecordById - Gets a record by its id.
|
||||
* @param {GetRecordRequest} request - The request that will be used to get the record.
|
||||
@@ -320,9 +346,8 @@ export class OnspringClient {
|
||||
): Promise<ApiResponse<Record>> {
|
||||
const { appId, recordId, fieldIds, dataFormat } = request;
|
||||
const endpoint = EndpointFactory.getRecordByIdEndpoint(appId, recordId);
|
||||
const apiResponse = await this.get<any>(endpoint, {
|
||||
params: { fieldIds: fieldIds.join(','), dataFormat },
|
||||
});
|
||||
const params = { fieldIds: fieldIds.join(','), dataFormat };
|
||||
const apiResponse = await this.get<any>(endpoint, { params });
|
||||
|
||||
if (apiResponse.isSuccessful === false) {
|
||||
return apiResponse;
|
||||
|
||||
Reference in New Issue
Block a user