feat: implement getFieldById method
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { App } from './App';
|
||||
import { CollectionResponse } from './CollectionResponse';
|
||||
import { Field } from './Field';
|
||||
import { GetPagedAppsResponse } from './GetPagedAppsResponse';
|
||||
|
||||
/**
|
||||
@@ -70,7 +71,7 @@ export class ApiResponse<T> {
|
||||
* @method AsAppType - Converts the ApiResponse to an ApiResponse<App>.
|
||||
* @returns {ApiResponse<App>} - An ApiResponse<App>.
|
||||
*/
|
||||
AsAppType(): ApiResponse<App> {
|
||||
public AsAppType(): ApiResponse<App> {
|
||||
const apiResponse = this as ApiResponse<any>;
|
||||
|
||||
const app = new App(
|
||||
@@ -90,7 +91,7 @@ export class ApiResponse<T> {
|
||||
* @method AsAppCollectionType - Converts the ApiResponse to an ApiResponse<CollectionResponse<App>>.
|
||||
* @returns {ApiResponse<CollectionResponse<App>>} - An ApiResponse<CollectionResponse<App>>.
|
||||
*/
|
||||
AsAppCollectionType(): ApiResponse<CollectionResponse<App>> {
|
||||
public AsAppCollectionType(): ApiResponse<CollectionResponse<App>> {
|
||||
const apiResponse = this as ApiResponse<any>;
|
||||
|
||||
const apps = apiResponse.data.items.map((item: any) => {
|
||||
@@ -108,4 +109,24 @@ export class ApiResponse<T> {
|
||||
collectionResponse
|
||||
);
|
||||
}
|
||||
|
||||
public AsFieldType(): ApiResponse<Field> {
|
||||
const apiResponse = this as ApiResponse<any>;
|
||||
|
||||
const field = new Field(
|
||||
apiResponse.data.id,
|
||||
apiResponse.data.appId,
|
||||
apiResponse.data.name,
|
||||
apiResponse.data.type,
|
||||
apiResponse.data.status,
|
||||
apiResponse.data.isRequired,
|
||||
apiResponse.data.isUnique
|
||||
);
|
||||
|
||||
return new ApiResponse<Field>(
|
||||
apiResponse.statusCode,
|
||||
apiResponse.message,
|
||||
field
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
import { FieldStatus } from '../enums/FieldStatus';
|
||||
import { FieldType } from '../enums/FieldType';
|
||||
|
||||
export class Field {
|
||||
public id: number;
|
||||
public appId: number;
|
||||
public name: string;
|
||||
public type: FieldType;
|
||||
public status: FieldStatus;
|
||||
public isRequired: boolean;
|
||||
public isUnique: boolean;
|
||||
|
||||
public constructor(
|
||||
id: number,
|
||||
appId: number,
|
||||
name: string,
|
||||
type: string,
|
||||
status: string,
|
||||
isRequired: boolean,
|
||||
isUnique: boolean
|
||||
) {
|
||||
if (FieldType[type] === undefined) {
|
||||
throw new Error(`The type '${type}' is not a valid FieldType.`);
|
||||
}
|
||||
|
||||
if (FieldStatus[status] === undefined) {
|
||||
throw new Error(`The status '${status}' is not a valid FieldStatus.`);
|
||||
}
|
||||
|
||||
this.id = id;
|
||||
this.appId = appId;
|
||||
this.name = name;
|
||||
this.type = FieldType[type];
|
||||
this.status = FieldStatus[status];
|
||||
this.isRequired = isRequired;
|
||||
this.isUnique = isUnique;
|
||||
}
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import { PagingRequest } from './PagingRequest';
|
||||
import { GetPagedAppsResponse } from './GetPagedAppsResponse';
|
||||
import { App } from './App';
|
||||
import { CollectionResponse } from './CollectionResponse';
|
||||
import { Field } from './Field';
|
||||
|
||||
/**
|
||||
* @class OnspringClient - A client that can communicate with the Onspring API.
|
||||
@@ -109,6 +110,17 @@ export class OnspringClient {
|
||||
return apiResponse.AsAppCollectionType();
|
||||
}
|
||||
|
||||
public async getFieldById(fieldId: number): Promise<ApiResponse<Field>> {
|
||||
const endpoint = EndpointFactory.getFieldByIdEndpoint(fieldId);
|
||||
const apiResponse = await this.get<any>(endpoint);
|
||||
|
||||
if (apiResponse.isSuccessful === false) {
|
||||
return apiResponse;
|
||||
}
|
||||
|
||||
return apiResponse.AsFieldType();
|
||||
}
|
||||
|
||||
/**
|
||||
* @method get - Makes a GET request to the specified endpoint.
|
||||
* @param {string} endpoint - The endpoint that will be used to make the request.
|
||||
|
||||
Reference in New Issue
Block a user