feat : admin bovin
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { useApi } from '~/composables/useApi'
|
||||
import type {BovineTypeData} from "~/services/dto/bovine-type-data";
|
||||
import type { BovineTypeData, BovinData, BovinPayload } from "~/services/dto/bovine-type-data";
|
||||
|
||||
export type BovineTypeListResponse =
|
||||
| BovineTypeData[]
|
||||
@@ -21,3 +21,47 @@ export async function getBovineTypeList(): Promise<BovineTypeData[]> {
|
||||
|
||||
return []
|
||||
}
|
||||
|
||||
export async function getBovinList(): Promise<BovinData[]> {
|
||||
const api = useApi()
|
||||
const response = await api.get<BovineTypeListResponse>('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<BovinData> {
|
||||
const api = useApi()
|
||||
const response = await api.get<BovineTypeData>(`bovine_types/${id}`)
|
||||
return mapToBovinData(response)
|
||||
}
|
||||
|
||||
export async function createBovin(payload: BovinPayload = {}): Promise<BovinData> {
|
||||
const api = useApi()
|
||||
const response = await api.post<BovineTypeData>('bovine_types', toBovineTypePayload(payload))
|
||||
return mapToBovinData(response)
|
||||
}
|
||||
|
||||
export async function updateBovin(id: number, payload: BovinPayload = {}): Promise<BovinData> {
|
||||
const api = useApi()
|
||||
const response = await api.patch<BovineTypeData>(`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<BovineTypeData> => ({
|
||||
label: payload.name ?? undefined,
|
||||
code: payload.code ?? undefined
|
||||
})
|
||||
|
||||
@@ -3,3 +3,19 @@ export interface BovineTypeData{
|
||||
label: string
|
||||
code: string
|
||||
}
|
||||
|
||||
export interface BovinData {
|
||||
id: number
|
||||
name: string
|
||||
code: string
|
||||
}
|
||||
|
||||
export interface BovinFormData {
|
||||
name: string
|
||||
code: string
|
||||
}
|
||||
|
||||
export type BovinPayload = {
|
||||
name?: string | null
|
||||
code?: string | null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user