import { Injectable } from '@angular/core'; import { HttpClient, HttpErrorResponse, HttpHeaders, } from '@angular/common/http'; import { Observable, throwError } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { environment } from 'src/environments/environment'; import { MeterData } from '../dataModels/Meterdata'; import { Meter } from '../dataModels/Meter'; @Injectable({ providedIn: 'root', }) export class DatabaseService { private baseUrl = environment.apiBaseUrl; constructor(private http: HttpClient) {} getMeterData(): Observable { const url = `${this.baseUrl}/meter-data`; return this.http.get(url).pipe(catchError(this.handleError)); } getMeterDataByType(usageType: string): Observable { const url = `${this.baseUrl}/meter-data?usageType=${usageType}`; return this.http.get(url).pipe(catchError(this.handleError)); } addMeterData(meterData: MeterData): Observable { const url = `${this.baseUrl}/meter-data`; return this.http .post(url, meterData) .pipe(catchError(this.handleError)); } getMeters(): Observable { const url = `${this.baseUrl}/meters`; return this.http.get(url).pipe(catchError(this.handleError)); } private handleError(error: HttpErrorResponse): Observable { // https://stackoverflow.com/questions/68655492/throwerrorerror-is-now-deprecated-but-there-is-no-new-errorhttperrorresponse if (error.error instanceof ErrorEvent) { // A client-side or network error occurred. Handle it accordingly. console.error('An error occurred:', error.error.message); } else { // The backend returned an unsuccessful response code. // The response body may contain clues as to what went wrong. console.error( `Backend returned code ${error.status}, ` + `body was: ${error.error}` ); } // Return an observable with a user-facing error message. return throwError(() => error); } }