import { fetchType, getFetch, getFetchWithCount } from "@/components/lib/api"; import type { CommonTableProps } from "../../common/type/header"; import type { customRswtBdst } from "../../ruseFcltMng/fcltReg/rswtReg"; import { rswtSttHeadListExport, rswtSttNodeListExport, } from "../../ruseFcltMng/fcltSttn/rswtSttn/headList"; export const rswtMapSize = 15; export type rswtMapState = { rswtMap: { rswtMapRes: customRswtBdst[]; rswtMapCount: number; isInit: boolean; rswtSttHeadList: CommonTableProps[]; rswtSttNodeList: CommonTableProps[]; }; }; type rswtMapActions = { rswtMapInit: (page: number, total: number, cityOrSgg: string) => void; rswtMapSearch: ( page: number, total: number, cityOrSgg: string, searchTxt?: string ) => void; rswtMapDetile: (featureCd: string) => Promise; }; export type rswtMapType = rswtMapState & rswtMapActions; export const rswtMapStateExport: rswtMapState = { rswtMap: { isInit: false, rswtMapRes: [], rswtMapCount: 1, rswtSttHeadList: rswtSttHeadListExport, rswtSttNodeList: rswtSttNodeListExport, }, }; export const rswtMapActionsExport: (set: any) => rswtMapActions = ( set: any ) => { return { rswtMapInit: async (page: number, total: number, cityOrSgg: string) => { try { const rswtMapRes = await getFetchWithCount( fetchType.WR, `/reuseFc/waterreuseFc` + (page ? `/${page}` : "/1") + (total ? `/${total}` : "/20") + (cityOrSgg ? `/${cityOrSgg}` : "/0") ); set((state: rswtMapState) => { return { ...state, rswtMap: { ...state.rswtMap, rswtMapRes: rswtMapRes.data, rswtMapCount: rswtMapRes.count, isInit: false, }, }; }); } catch (e) { console.log(e); } }, rswtMapSearch: async ( page: number, total: number, cityOrSgg: string, searchTxt?: string ) => { try { const rswtMapRes = await getFetchWithCount( fetchType.WR, `/reuseFc/waterreuseFc` + (page ? `/${page}` : "/1") + (total ? `/${total}` : "/20") + (cityOrSgg ? `/${cityOrSgg}` : "/0") + (searchTxt ? `/${searchTxt}` : "") ); set((state: rswtMapState) => { return { ...state, rswtMap: { ...state.rswtMap, rswtMapRes: rswtMapRes.data, rswtMapCount: rswtMapRes.count, }, }; }); } catch (e) { console.log(e); } }, rswtMapDetile: async (featureCd: string) => { try { const rswtDetail = await getFetch( fetchType.WR, `/reuseFc/waterreuseFc/1/3/0/${featureCd}` ); if (rswtDetail && rswtDetail.length > 0) { return rswtDetail[0]; } else { return null; } } catch (error) { console.log(error); throw error; // 호출부에서 catch 가능하도록 } }, }; };