70 lines
1.8 KiB
TypeScript
70 lines
1.8 KiB
TypeScript
import apiClient from "../api-client";
|
|
import { RankingRequest } from "@/types/ranking.types";
|
|
import { CowDto, CowDetailResponseDto } from "@/types/cow.types";
|
|
|
|
/**
|
|
* 개체(Cow) 관련 API
|
|
*/
|
|
export const cowApi = {
|
|
/**
|
|
* GET /cow - 전체 개체 목록
|
|
*/
|
|
findAll: async (): Promise<CowDto[]> => {
|
|
return await apiClient.get("/cow");
|
|
},
|
|
|
|
/**
|
|
* GET /cow/paginated - 페이지네이션 목록
|
|
*/
|
|
findAllWithPagination: async (
|
|
page: number = 1,
|
|
limit: number = 10
|
|
): Promise<{ data: CowDto[]; total: number; page: number; limit: number }> => {
|
|
return await apiClient.get("/cow/paginated", {
|
|
params: { page, limit },
|
|
});
|
|
},
|
|
|
|
/**
|
|
* GET /cow/farm/:farmNo - 특정 농장의 개체 목록
|
|
*/
|
|
findByFarmNo: async (farmNo: number): Promise<CowDto[]> => {
|
|
return await apiClient.get(`/cow/farm/${farmNo}`);
|
|
},
|
|
|
|
/**
|
|
* GET /cow/search - 개체 검색 (개체번호 또는 개체명)
|
|
*/
|
|
search: async (
|
|
keyword: string,
|
|
farmNo?: number,
|
|
limit: number = 20
|
|
): Promise<CowDto[]> => {
|
|
return await apiClient.get("/cow/search", {
|
|
params: { keyword, farmNo, limit },
|
|
});
|
|
},
|
|
|
|
/**
|
|
* GET /cow/:cowNo - 개체 상세 조회
|
|
*/
|
|
findOne: async (cowNo: string): Promise<CowDetailResponseDto> => {
|
|
return await apiClient.get(`/cow/${cowNo}`);
|
|
},
|
|
|
|
/**
|
|
* POST /cow/ranking - 암소 랭킹 조회 (필터 + 랭킹 통합)
|
|
*/
|
|
getRanking: async (rankingRequest: RankingRequest): Promise<any> => {
|
|
return await apiClient.post("/cow/ranking", rankingRequest);
|
|
},
|
|
|
|
/**
|
|
* POST /cow/ranking/global - 전체 농가 개체 대상 랭킹 조회
|
|
*/
|
|
getGlobalRanking: async (rankingRequest: RankingRequest): Promise<any> => {
|
|
return await apiClient.post("/cow/ranking/global", rankingRequest);
|
|
},
|
|
|
|
};
|