import { ref, computed } from 'vue'; import { defineStore } from 'pinia'; import { AxiosWrapper } from '@/util/axios-wrapper'; import _ from 'lodash'; import type { IQueryType, IQueryResult, IQueryParams } from '@/util/types.util'; const axios = new AxiosWrapper(); const api = { url: `/travel/v1/api/region` }; export const RegionStore = defineStore('region', () => { const count = ref(0); const doubleCount = computed(() => count.value * 2); function increment() { count.value++; } const query = async ({ skip = 0, limit = undefined, ...info }: IQueryParams = {}): Promise => { let cond: IQueryType = {}; if (skip) cond.skip = skip; if (limit) cond.limit = limit; cond = { ...cond, ...info }; const res = await axios.$get(`${api.url}`, cond); return res; }; const fetch = async (payload: any): Promise => { const res = await axios.$get(`${api.url}/${payload}`); return res; }; const create = async (payload: any): Promise => { const res = await axios.$post(`${api.url}`, payload); return res; }; const update = async (payload: any): Promise => { const id = _.get(payload, 'id', _.get(payload, '_id')); const res = await axios.$post(`${api.url}/${id}`, payload); return res; }; const del = async (payload: any): Promise => { const res = await axios.$delete(`${api.url}/${payload}`); return res; }; return { count, doubleCount, increment, query, fetch, create, update, del }; });