feat(plantes): store plants — actions variety CRUD

This commit is contained in:
2026-03-08 19:29:58 +01:00
parent 32c7781d14
commit 05b2ddc27c

View File

@@ -1,6 +1,7 @@
// frontend/src/stores/plants.ts
import { defineStore } from 'pinia'
import { ref } from 'vue'
import { plantsApi, type Plant } from '@/api/plants'
import { plantsApi, type Plant, type PlantVariety } from '@/api/plants'
export const usePlantsStore = defineStore('plants', () => {
const plants = ref<Plant[]>([])
@@ -18,10 +19,45 @@ export const usePlantsStore = defineStore('plants', () => {
return created
}
async function update(id: number, p: Partial<Plant>) {
const updated = await plantsApi.update(id, p)
const idx = plants.value.findIndex(x => x.id === id)
if (idx !== -1) plants.value[idx] = updated
return updated
}
async function remove(id: number) {
await plantsApi.delete(id)
plants.value = plants.value.filter(p => p.id !== id)
}
return { plants, loading, fetchAll, create, remove }
async function createVariety(plantId: number, v: Partial<PlantVariety>) {
const created = await plantsApi.createVariety(plantId, v)
const plant = plants.value.find(p => p.id === plantId)
if (plant) {
if (!plant.varieties) plant.varieties = []
plant.varieties.push(created)
}
return created
}
async function updateVariety(plantId: number, vid: number, v: Partial<PlantVariety>) {
const updated = await plantsApi.updateVariety(plantId, vid, v)
const plant = plants.value.find(p => p.id === plantId)
if (plant?.varieties) {
const idx = plant.varieties.findIndex(x => x.id === vid)
if (idx !== -1) plant.varieties[idx] = updated
}
return updated
}
async function removeVariety(plantId: number, vid: number) {
await plantsApi.deleteVariety(plantId, vid)
const plant = plants.value.find(p => p.id === plantId)
if (plant?.varieties) {
plant.varieties = plant.varieties.filter(v => v.id !== vid)
}
}
return { plants, loading, fetchAll, create, update, remove, createVariety, updateVariety, removeVariety }
})