angular dataService

This commit is contained in:
Darko Luketic 2018-03-28 18:23:31 +02:00
parent 938a7e7789
commit 7e83d3fb95
2 changed files with 219 additions and 0 deletions

View File

@ -0,0 +1,15 @@
import { TestBed, inject } from '@angular/core/testing';
import { DataService } from './data.service';
describe('DataService', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [DataService]
});
});
it('should be created', inject([DataService], (service: DataService) => {
expect(service).toBeTruthy();
}));
});

View File

@ -0,0 +1,204 @@
import {Injectable} from '@angular/core';
import {HttpClient, HttpParams} from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
@Injectable()
export class DataService {
private rootURL = '/api/v1/data/';
constructor(private http: HttpClient) {
}
public list(p: DataParams): Observable<Data[]> {
let params = new HttpParams();
if (p.start !== undefined) {
params = params.append('start', p.start.toString());
}
if (p.limit !== undefined) {
params = params.append('limit', p.limit.toString());
}
if (p.sort !== undefined) {
params = params.append('sort', p.sort);
}
// string
if (p.nameQuery !== undefined) {
params = params.append('name', '1');
params = params.append('name.operation', p.nameQuery.operation);
params = params.append('name.query', p.nameQuery.query);
if (p.nameQuery.options !== undefined) {
params = params.append('name.options', p.nameQuery.options);
}
}
// string
if (p.addressQuery !== undefined) {
params = params.append('address', '1');
params = params.append('address.operation', p.addressQuery.operation);
params = params.append('address.query', p.addressQuery.query);
if (p.addressQuery.options !== undefined) {
params = params.append('address.options', p.addressQuery.options);
}
}
// string
if (p.locationQuery !== undefined) {
params = params.append('location', '1');
params = params.append('location.operation', p.locationQuery.operation);
params = params.append('location.query', p.locationQuery.query);
if (p.locationQuery.options !== undefined) {
params = params.append('location.options', p.locationQuery.options);
}
}
// number
if (p.ageQuery !== undefined) {
params = params.append('age', '1');
params = params.append('age.operation', p.ageQuery.operation);
if (p.ageQuery.from !== undefined) {
params = params.append('age.from', p.ageQuery.from.toString());
}
if (p.ageQuery.to !== undefined) {
params = params.append('age.to', p.ageQuery.to.toString());
}
}
// number
if (p.priceQuery !== undefined) {
params = params.append('price', '1');
params = params.append('price.operation', p.priceQuery.operation);
if (p.priceQuery.from !== undefined) {
params = params.append('price.from', p.priceQuery.from.toString());
}
if (p.priceQuery.to !== undefined) {
params = params.append('price.to', p.priceQuery.to.toString());
}
}
// bool
if (p.enabledQuery !== undefined) {
params = params.append('enabled', '1');
if (p.enabledQuery.query) {
params = params.append('enabled.query', 'true');
} else {
params = params.append('enabled.query', 'false');
}
}
return this.http.get<Data[]>(this.rootURL, {params: params});
}
public find(p: DataParams): Observable<Data> {
let params = new HttpParams();
// if
if (p.idQuery !== undefined) {
params = params.append('id', '1');
params = params.append('id.query', p.idQuery.query);
}
// string
if (p.nameQuery !== undefined) {
params = params.append('name', '1');
params = params.append('name.operation', p.nameQuery.operation);
params = params.append('name.query', p.nameQuery.query);
if (p.nameQuery.options !== undefined) {
params = params.append('name.options', p.nameQuery.options);
}
}
// string
if (p.addressQuery !== undefined) {
params = params.append('address', '1');
params = params.append('address.operation', p.addressQuery.operation);
params = params.append('address.query', p.addressQuery.query);
if (p.addressQuery.options !== undefined) {
params = params.append('address.options', p.addressQuery.options);
}
}
// string
if (p.locationQuery !== undefined) {
params = params.append('location', '1');
params = params.append('location.operation', p.locationQuery.operation);
params = params.append('location.query', p.locationQuery.query);
if (p.locationQuery.options !== undefined) {
params = params.append('location.options', p.locationQuery.options);
}
}
// number
if (p.ageQuery !== undefined) {
params = params.append('age', '1');
params = params.append('age.operation', p.ageQuery.operation);
if (p.ageQuery.from !== undefined) {
params = params.append('age.from', p.ageQuery.from.toString());
}
if (p.ageQuery.to !== undefined) {
params = params.append('age.to', p.ageQuery.to.toString());
}
}
// number
if (p.priceQuery !== undefined) {
params = params.append('price', '1');
params = params.append('price.operation', p.priceQuery.operation);
if (p.priceQuery.from !== undefined) {
params = params.append('price.from', p.priceQuery.from.toString());
}
if (p.priceQuery.to !== undefined) {
params = params.append('price.to', p.priceQuery.to.toString());
}
}
// bool
if (p.enabledQuery !== undefined) {
params = params.append('enabled', '1');
if (p.enabledQuery.query) {
params = params.append('enabled.query', 'true');
} else {
params = params.append('enabled.query', 'false');
}
}
return this.http.get<Data>(this.rootURL + '1', {params: params});
}
public create(m: Data) {
return this.http.post(this.rootURL, m);
}
public updateId(id: string, m: Data) {
return this.http.put(this.rootURL + id, m);
}
public removeId(id: string) {
return this.http.delete(this.rootURL + id);
}
}
export class DataParams {
start?: number;
limit?: number;
sort?: string;
idQuery?: { query: string };
nameQuery?: { operation: string, query: string, options?: string };
addressQuery?: { operation: string, query: string, options?: string };
locationQuery?: { operation: string, query: string, options?: string };
ageQuery?: { operation: string, from?: number, to?: number };
priceQuery?: { operation: string, from?: number, to?: number };
enabledQuery?: { query: boolean };
}
export class Data {
id: string;
name: string;
address: string;
location: string;
age?: number;
price?: number;
enabled: boolean;
}