import { useApi } from '~/composables/useApi' import type { BovineTypeData, BovinData, BovinPayload } from "~/services/dto/bovine-type-data"; export type BovineTypeListResponse = | BovineTypeData[] | { 'hydra:member'?: BovineTypeData[] } export async function getBovineTypeList(): Promise { const api = useApi() const response = await api.get('bovine_types', {}, { toastErrorKey: 'errors.bovin.list' }) if (Array.isArray(response)) { return response } if (response && typeof response === 'object' && Array.isArray(response['hydra:member'])) { return response['hydra:member'] } return [] } export async function getBovinList(): Promise { const api = useApi() const response = await api.get('bovine_types', {}, { toastErrorKey: 'errors.bovin.list' }) const items = Array.isArray(response) ? response : response && typeof response === 'object' && Array.isArray(response['hydra:member']) ? response['hydra:member'] : [] return items.map(mapToBovinData) } export async function getBovin(id: number): Promise { const api = useApi() const response = await api.get(`bovine_types/${id}`) return mapToBovinData(response) } export async function createBovin(payload: BovinPayload = {}): Promise { const api = useApi() const response = await api.post('bovine_types', toBovineTypePayload(payload)) return mapToBovinData(response) } export async function updateBovin(id: number, payload: BovinPayload = {}): Promise { const api = useApi() const response = await api.patch(`bovine_types/${id}`, toBovineTypePayload(payload)) return mapToBovinData(response) } const mapToBovinData = (item: BovineTypeData): BovinData => ({ id: item.id, name: item.label, code: item.code }) const toBovineTypePayload = (payload: BovinPayload): Partial => ({ label: payload.name ?? undefined, code: payload.code ?? undefined })