41 lines
1.4 KiB
TypeScript
41 lines
1.4 KiB
TypeScript
import { useMemo } from "react";
|
|
import { create } from "zustand";
|
|
import { getGeoData } from "@/components/lib/api";
|
|
import { get } from "http";
|
|
|
|
interface Option { id: number, name: string }
|
|
|
|
interface SnStoreState {
|
|
ctpv: Option[];
|
|
sgg: Option[];
|
|
fetchCtpvData: () => Promise<void>;
|
|
fetchSggData: () => Promise<void>;
|
|
}
|
|
|
|
const useStore = create<SnStoreState>((set) => ({
|
|
// Define your store state and actions here
|
|
ctpv: [],
|
|
sgg: [],
|
|
fetchCtpvData: async () => {
|
|
const ctpvData = await getGeoData('/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo%3Atb_ms_ctpv&outputFormat=application%2Fjson');
|
|
const ctpvList: Option[] = ctpvData.features
|
|
.map((feature: any) => ({
|
|
id: feature.properties.mctpv_cd.trim(),
|
|
name: feature.properties.mctpv_korn_nm
|
|
}))
|
|
.sort((a: Option, b: Option) => a.name.localeCompare(b.name, 'ko'));
|
|
set({ ctpv: ctpvList });
|
|
},
|
|
fetchSggData: async () => {
|
|
const sggData = await getGeoData('/hasudo/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=hasudo%3Atb_ms_sgg&outputFormat=application%2Fjson');
|
|
const sggList: Option[] = sggData.features
|
|
.map((feature: any) => ({
|
|
id: feature.properties.sgg_cd,
|
|
name: feature.properties.sgg_korn_nm
|
|
}))
|
|
.sort((a: Option, b: Option) => a.name.localeCompare(b.name, 'ko'));
|
|
set({ sgg: sggList });
|
|
}
|
|
}));
|
|
|
|
export default useStore; |