import { useApi } from '~/composables/useApi' import type { BovineTypeData, 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.map(mapToBovineTypeData) } if (response && typeof response === 'object' && Array.isArray(response['hydra:member'])) { return response['hydra:member'].map(mapToBovineTypeData) } return [] } export async function getBovin(id: number): Promise { const api = useApi() const response = await api.get(`bovine_types/${id}`, {}, { toastErrorKey: 'errors.bovin.fetch' }) return mapToBovineTypeData(response) } export async function createBovin(payload: BovinPayload = {}): Promise { const api = useApi() const response = await api.post('bovine_types', toBovineTypePayload(payload), { toastErrorKey: 'errors.bovin.create', toastSuccessKey: 'success.bovin.create' }) return mapToBovineTypeData(response) } export async function updateBovin(id: number, payload: BovinPayload = {}): Promise { const api = useApi() const response = await api.patch(`bovine_types/${id}`, toBovineTypePayload(payload), { toastErrorKey: 'errors.bovin.update', toastSuccessKey: 'success.bovin.update' }) return mapToBovineTypeData(response) } const mapToBovineTypeData = (item: BovineTypeData): BovineTypeData => ({ id: item.id, label: item.label, code: item.code }) const toBovineTypePayload = (payload: BovinPayload): Partial => ({ label: payload.label ?? undefined, code: payload.code ?? undefined })