File

core/src/request-handlers/abstract-builders.ts

Extends

BaseBuilder

Index

Methods

Constructor

constructor(_http: HttpClient, config: ResourceModuleConfiguration)
Parameters :
Name Type Optional
_http HttpClient No
config ResourceModuleConfiguration No

Methods

Public add
add(targetName: string, relatedName: string, body: any, relatedInstance: any, options: HttpClientOptions)
Parameters :
Name Type Optional
targetName string No
relatedName string No
body any No
relatedInstance any No
options HttpClientOptions No
Returns : Promise<void>
Protected buildUrl
buildUrl(targetName: string, relatedName: string, relatedInstance: any)
Parameters :
Name Type Optional
targetName string No
relatedName string No
relatedInstance any No
Returns : string
Public remove
remove(targetName: string, relatedName: string, body: any, relatedInstance: any, options: HttpClientOptions)
Parameters :
Name Type Optional
targetName string No
relatedName string No
body any No
relatedInstance any No
options HttpClientOptions No
Returns : Promise<void>
Public request
request(method: HttpVerb, path: string, options: HttpClientOptions, body?: any)
Inherited from BaseBuilder
Defined in BaseBuilder:8
Parameters :
Name Type Optional
method HttpVerb No
path string No
options HttpClientOptions No
body any Yes
Returns : Promise<Object>
import { toPlural, ResourceModuleConfiguration, HttpClientOptions, HttpVerb } from '../utils';
import { HttpClient } from '@angular/common/http';

export namespace Abstract {
	export abstract class BaseBuilder {
		constructor(protected readonly _http: HttpClient) {}

		public request(method: HttpVerb, path: string, options: HttpClientOptions, body?: any): Promise<Object> {
			delete options.url;
			if (body) {
				options.body = body;
			}
			return this._http.request(method, path, options).toPromise();
		}
	}

	export abstract class SimpleBuilder extends BaseBuilder {
		constructor(protected readonly _http: HttpClient, protected readonly config: ResourceModuleConfiguration) {
			super(_http);
		}
		protected buildUrl(targetName: string, targetInstance?: any): string {
			let path = (this.config.rootPath ? this.config.rootPath : '') + `/${toPlural(targetName)}/$targetId`;
			path = path.replace('/$targetId', targetInstance ? `/${targetInstance.id}` : '');
			return path;
		}

		public fetch(targetName: string, options: HttpClientOptions): Promise<Object> {
			const path = options.url || this.buildUrl(targetName);
			return <Promise<Object[]>>this.request(HttpVerb.GET, path, options);
		}
		public save(targetName: string, body: any, options: HttpClientOptions): Promise<Object> {
			const path = options.url || this.buildUrl(targetName);
			return this.request(HttpVerb.POST, path, options, body);
		}
		public update(targetName: string, body: any, options: HttpClientOptions): Promise<any> {
			const path = options.url || this.buildUrl(targetName, body);
			return this.request(HttpVerb.PATCH, path, options, body).then(() => Promise.resolve());
		}
		public delete(targetName: string, instance: any, options: HttpClientOptions): Promise<any> {
			const path = options.url || this.buildUrl(targetName, instance);
			return this.request(HttpVerb.DELETE, path, options).then(() => Promise.resolve());
		}
	}
	export abstract class ToOneBuilder extends BaseBuilder {
		constructor(protected readonly _http: HttpClient, protected readonly config: ResourceModuleConfiguration) {
			super(_http);
		}
		protected buildUrl(targetName: string, relatedName: string, relatedInstance: any): string {
			const path = (this.config.rootPath ? this.config.rootPath : '') + `/${toPlural(relatedName)}/${relatedInstance.id}/${targetName}`;
			return path;
		}
		public add(targetName: string, relatedName: string, body: any, relatedInstance: any, options: HttpClientOptions): Promise<void> {
			const path = options.url || this.buildUrl(targetName, relatedName, relatedInstance);
			return this.request(HttpVerb.PATCH, path, options, body).then(() => Promise.resolve());
		}
		public remove(targetName: string, relatedName: string, body: any, relatedInstance: any, options: HttpClientOptions): Promise<void> {
			const path = options.url || this.buildUrl(targetName, relatedName, relatedInstance);
			return this.request(HttpVerb.DELETE, path, options).then(() => Promise.resolve());
		}
	}
	export abstract class ToManyBuilder extends BaseBuilder {
		constructor(protected readonly _http: HttpClient, protected readonly config: ResourceModuleConfiguration) {
			super(_http);
		}
		protected buildUrl(targetName: string, relatedName: string, relatedInstance: any): string {
			const path =
				(this.config.rootPath ? this.config.rootPath : '') + `/${toPlural(relatedName)}/${relatedInstance.id}/${toPlural(targetName)}`;
			return path;
		}
		public add(targetName: string, relatedName: string, body: any, relatedInstance: any, options: HttpClientOptions): Promise<void> {
			const path = options.url || this.buildUrl(targetName, relatedName, relatedInstance);
			return this.request(HttpVerb.POST, path, options, body).then(() => Promise.resolve());
		}
		public remove(targetName: string, relatedName: string, body: any, relatedInstance: any, options: HttpClientOptions): Promise<void> {
			const path = options.url || this.buildUrl(targetName, relatedName, relatedInstance);
			return this.request(HttpVerb.DELETE, path, options, body).then(() => Promise.resolve());
		}
	}
}

result-matching ""

    No results matching ""