import { HttpClient, HttpParams } from '@angular/common/http'; import { Injectable, inject } from '@angular/core'; import { Observable } from 'rxjs'; import { API_CONFIG } from '../config/api.config'; import { ApiResponse } from '../models/api-response.model'; @Injectable({ providedIn: 'root' }) export class BaseApiService { private readonly http = inject(HttpClient); protected get(resource: string, params?: Record): Observable { let httpParams = new HttpParams(); if (params) { Object.entries(params).forEach(([key, value]) => { httpParams = httpParams.set(key, String(value)); }); } return this.http.get(`${API_CONFIG.baseUrl}${resource}`, { params: httpParams }); } protected post(resource: string, body: T): Observable { return this.http.post(`${API_CONFIG.baseUrl}${resource}`, body); } protected put(resource: string, body: T): Observable { return this.http.put(`${API_CONFIG.baseUrl}${resource}`, body); } protected delete(resource: string): Observable { return this.http.delete(`${API_CONFIG.baseUrl}${resource}`); } }