import type { Site, SiteStats, UpdateSitePayload } from "@/domain/entities/site";
import type { SiteRepository } from "@/domain/repositories/site.repository";
import type { BackendPaginatedData, PaginationQueryParams } from "@/shared/types";
import { api } from "@/infrastructure/api/api-client";

export class SiteRepositoryImpl implements SiteRepository {
  findAll(params: PaginationQueryParams) {
    return api.get<BackendPaginatedData<Site>>("/sites", { params });
  }

  findById(id: number) {
    return api.get<Site>(`/sites/${id}`);
  }

  update(id: number, payload: UpdateSitePayload) {
    return api.put<Site>(`/sites/${id}`, payload);
  }

  delete(id: number) {
    return api.delete(`/sites/${id}`);
  }

  getStats() {
    return api.get<SiteStats>("/sites/stats");
  }
}
