feat: added saveRecord method
This commit is contained in:
@@ -45,6 +45,7 @@ import { StringRecordValue } from './StringRecordValue';
|
||||
import { TimeSpanData } from './TimeSpanData';
|
||||
import { TimeSpanRecordValue } from './TimeSpanRecordValue';
|
||||
import { type RecordValue } from './RecordValue';
|
||||
import { SaveRecordResponse } from './SaveRecordResponse';
|
||||
|
||||
/**
|
||||
* @class ApiResponse - A generic response object for API requests.
|
||||
@@ -431,6 +432,19 @@ export class ApiResponse<T> {
|
||||
);
|
||||
}
|
||||
|
||||
public asSaveRecordResponseType(): ApiResponse<SaveRecordResponse> {
|
||||
const apiResponse = this as ApiResponse<any>;
|
||||
const response = new SaveRecordResponse(
|
||||
apiResponse.data.id,
|
||||
apiResponse.data.warnings
|
||||
);
|
||||
return new ApiResponse<SaveRecordResponse>(
|
||||
apiResponse.statusCode,
|
||||
apiResponse.message,
|
||||
response
|
||||
);
|
||||
}
|
||||
|
||||
private static getRecordValueByType(recordValueItem: any): RecordValue<any> {
|
||||
const type = RecordValueType[recordValueItem.type];
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import { EndpointFactory } from './EndpointFactory';
|
||||
import { ApiResponseFactory } from './ApiResponseFactory';
|
||||
import { DataFormat } from '../enums/DataFormat';
|
||||
import { ReportDataType } from '../enums/ReportDataType';
|
||||
import { Record } from './Record';
|
||||
import { type AxiosInstance, type AxiosRequestConfig } from 'axios';
|
||||
import { type ApiResponse } from './ApiResponse';
|
||||
import { type GetPagedAppsResponse } from './GetPagedAppsResponse';
|
||||
@@ -20,12 +21,13 @@ import { type ListItemResponse } from './ListItemResponse';
|
||||
import { type ListItemRequest } from './ListItemRequest';
|
||||
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';
|
||||
import { type GetRecordsRequest } from './GetRecordsRequest';
|
||||
import { type QueryRecordsRequest } from './QueryRecordsRequest';
|
||||
import { type SaveRecordResponse } from './SaveRecordResponse';
|
||||
import { type SaveRecordRequest } from './SaveRecordRequest';
|
||||
|
||||
/**
|
||||
* @class OnspringClient - A client that can communicate with the Onspring API.
|
||||
@@ -397,6 +399,24 @@ export class OnspringClient {
|
||||
return apiResponse.asGetPagedRecordsResponseType();
|
||||
}
|
||||
|
||||
public async saveRecord(
|
||||
request: Record | SaveRecordRequest
|
||||
): Promise<ApiResponse<SaveRecordResponse>> {
|
||||
request =
|
||||
request instanceof Record
|
||||
? request.convertToSaveRecordRequest()
|
||||
: request;
|
||||
|
||||
const endpoint = EndpointFactory.getAddOrUpdateRecordEndpoint();
|
||||
const apiResponse = await this.put<any>(endpoint, request);
|
||||
|
||||
if (apiResponse.isSuccessful === false) {
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
return apiResponse.asSaveRecordResponseType();
|
||||
}
|
||||
|
||||
/**
|
||||
* @method deleteRecordById - Deletes a record by its id.
|
||||
* @param {number} appId - The id of the app that the record belongs to.
|
||||
|
||||
@@ -13,7 +13,7 @@ export class Record {
|
||||
/**
|
||||
* @property {number} recordId - The id of the record.
|
||||
*/
|
||||
public recordId: number;
|
||||
public recordId: number | null;
|
||||
|
||||
/**
|
||||
* @property {RecordValue[]} fieldData - The data for the fields in the record.
|
||||
@@ -29,7 +29,7 @@ export class Record {
|
||||
*/
|
||||
constructor(
|
||||
appId: number,
|
||||
recordId: number,
|
||||
recordId: number | null,
|
||||
fieldData: Array<RecordValue<any>> = []
|
||||
) {
|
||||
this.appId = appId;
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
import { CreatedWithIdResponse } from './CreatedWithIdResponse';
|
||||
|
||||
export class SaveRecordResponse extends CreatedWithIdResponse {
|
||||
public warnings: string[];
|
||||
|
||||
constructor(id: number, warnings: string[] = []) {
|
||||
super(id);
|
||||
this.warnings = warnings;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user