feat: implement getFieldById method

This commit is contained in:
StevanFreeborn
2023-02-02 21:37:40 -06:00
parent 8b61dfa36a
commit a1d3683603
6 changed files with 340 additions and 2 deletions
+23 -2
View File
@@ -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
);
}
}
+38
View File
@@ -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;
}
}
+12
View File
@@ -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.