import { Injectable } from '@angular/core'; import { HttpClient } from '@angular/common/http'; import { firstValueFrom, map } from 'rxjs'; import { HttpCheckData, ServiceCheckData } from '../../../../common/lib/http-check-data.module'; import { environment } from 'src/environments/environment'; @Injectable({ providedIn: 'root' }) export class ServiceApiService { constructor(private http: HttpClient) {} public loadServiceChecks(serverID: number): Promise { return firstValueFrom(this.http.get(`${environment.apiBaseUrl}services/${serverID}`)); } public getServiceCheck(serverID: number, serviceID: number) { return firstValueFrom(this.http.get(`${environment.apiBaseUrl}services/${serverID}/${serviceID}`)); } public saveServiceCheck(serverId: number, checkConfig: HttpCheckConfig): Promise { return firstValueFrom(this.http.put(`${environment.apiBaseUrl}services/${serverId}`, checkConfig)); } public deleteServiceCheck(serverID: number, serviceID: number): Promise { return firstValueFrom(this.http.delete(`${environment.apiBaseUrl}services/${serverID}/${serviceID}`).pipe(map(() => true))); } public queryServiceData(serverID: number, serviceID: number, start: Date, end: Date) { return firstValueFrom( this.http .get>(`${environment.apiBaseUrl}services/${serverID}/${serviceID}/data`, { params: { start: start.toISOString(), end: end.toISOString() } }) .pipe(map(resp => resp.data.map(data => ({ ...data, time: new Date(data.time) })) as ServiceCheckData[])) ); } public queryServiceLog(serverID: number, serviceID: number, start: Date, end: Date) { return firstValueFrom( this.http .get>(`${environment.apiBaseUrl}services/${serverID}/${serviceID}/logs`, { params: { start: start.toISOString(), end: end.toISOString() } }) .pipe(map(resp => resp.data.map(data => ({ ...data, time: new Date(data.time) })) as ServiceCheckData[])) ); } public testServiceCheck(checkConfig: HttpCheckConfig): Promise { return firstValueFrom( this.http .post(`${environment.apiBaseUrl}services/test`, checkConfig) .pipe(map(resp => resp.map(data => ({ ...data, time: new Date(data.time) })))) ); } }