salix-front/src/composables/useArrayData.js

57 lines
1.2 KiB
JavaScript
Raw Normal View History

2023-01-05 13:57:47 +00:00
import axios from 'axios';
import { useArrayDataStore } from 'stores/useArrayDataStore';
const arrayDataStore = useArrayDataStore();
const options = {
limit: 10,
};
export function useArrayData(key, userOptions) {
if (!key) throw new Error('ArrayData: A key is required to use this composable');
arrayDataStore.set(key, []);
const data = arrayDataStore.get(key);
if (typeof userOptions === 'object') {
Object.assign(options, userOptions);
}
async function fetch() {
if (!options.url) return;
const filter = {
limit: options.limit,
};
const requestOptions = { params: { filter } };
const response = await axios.get(options.url, requestOptions);
for (const row of response.data) data.push(row);
return response.data;
}
async function apply(filter) {
if (!options.url) return;
const requestOptions = { params: { filter } };
const response = await axios.get(options.url, requestOptions);
for (const row of response.data) data.push(row);
return response.data;
}
async function refresh() {
// TODO
}
return {
fetch,
apply,
refresh,
data,
};
}