import { HttpClient } from '@angular/common/http'; import { Injectable, Inject } from '@angular/core'; import { Schema } from "./jsonschemas.service"; import {catchError} from "rxjs/operators"; import {from} from "rxjs"; @Injectable() export class ApiService { constructor(protected http: HttpClient) {} protected api_root: string = '/api/v1' public getSchema() { return this.http.get(`${this.api_root}/openapi.json`); } } @Injectable() export class CrudService extends ApiService { public loading: boolean = false; public getList(resource: string, page: number, size: number, sortColumn: string, sortDirection: string) { return this.http.get<{ items: [{}] }>( `${this.api_root}/${resource.toLowerCase()}/?size=${size}&page=${page + 1}&sort_by=${sortDirection}(${sortColumn})` ); } public get(resource: string, id: string) { return this.http.get<{}>( `${this.api_root}/${resource.toLowerCase()}/${id}` ); } public update(resource: string, model: any) { return this.http.put<{ menu: [{}] }>( `${this.api_root}/${resource.toLowerCase()}/${model._id}`, model ); } public create(resource: string, model: any) { return this.http.post<{ menu: [{}] }>( `${this.api_root}/${resource.toLowerCase()}/`, model ); } public delete(resource: string, model: any) { return this.http.delete<{ menu: [{}] }>( `${this.api_root}/${resource.toLowerCase()}/${model._id}` ); } }