30 lines
1021 B
JavaScript
30 lines
1021 B
JavaScript
import { defineStore } from 'pinia';
|
|
import { ref } from 'vue';
|
|
import { plantingsApi } from '@/api/plantings';
|
|
export const usePlantingsStore = defineStore('plantings', () => {
|
|
const plantings = ref([]);
|
|
const loading = ref(false);
|
|
async function fetchAll() {
|
|
loading.value = true;
|
|
plantings.value = await plantingsApi.list();
|
|
loading.value = false;
|
|
}
|
|
async function create(p) {
|
|
const created = await plantingsApi.create(p);
|
|
plantings.value.push(created);
|
|
return created;
|
|
}
|
|
async function update(id, p) {
|
|
const updated = await plantingsApi.update(id, p);
|
|
const idx = plantings.value.findIndex(x => x.id === id);
|
|
if (idx !== -1)
|
|
plantings.value[idx] = updated;
|
|
return updated;
|
|
}
|
|
async function remove(id) {
|
|
await plantingsApi.delete(id);
|
|
plantings.value = plantings.value.filter(p => p.id !== id);
|
|
}
|
|
return { plantings, loading, fetchAll, create, update, remove };
|
|
});
|