mirror of
https://github.com/ArthurDanjou/arthome.git
synced 2026-01-14 12:14:33 +01:00
55 lines
1.5 KiB
TypeScript
55 lines
1.5 KiB
TypeScript
import type { type CategoryType, CreateCategorySchema, UpdateCategorySchema } from '~~/types/types'
|
|
|
|
export async function useCategories() {
|
|
const { data: categories, refresh }
|
|
= await useAsyncData<CategoryType[]>(async () => await useRequestFetch()('/api/categories'))
|
|
|
|
async function createCategory(category: CreateCategorySchema) {
|
|
try {
|
|
await useRequestFetch()('/api/categories', {
|
|
method: 'POST',
|
|
body: JSON.stringify(category),
|
|
})
|
|
await refresh()
|
|
await useSuccessToast('Category successfully created!', category.color)
|
|
}
|
|
catch (error) {
|
|
useErrorToast('Category creation failed!', String(error))
|
|
}
|
|
}
|
|
|
|
async function updateCategory(category: UpdateCategorySchema & { id: number }) {
|
|
try {
|
|
await $fetch(`/api/categories/${category.id}`, {
|
|
method: 'PUT',
|
|
body: JSON.stringify(category),
|
|
})
|
|
await refresh()
|
|
await useSuccessToast('Category successfully updated!')
|
|
}
|
|
catch (error) {
|
|
useErrorToast('Category update failed!', String(error))
|
|
}
|
|
}
|
|
|
|
async function deleteCategory(id: number) {
|
|
try {
|
|
await $fetch(`/api/categories/${id}`, {
|
|
method: 'DELETE',
|
|
})
|
|
await refresh()
|
|
await useSuccessToast('Category successfully deleted!')
|
|
}
|
|
catch (error) {
|
|
useErrorToast('Category deletion failed!', String(error))
|
|
}
|
|
}
|
|
|
|
return {
|
|
categories,
|
|
createCategory,
|
|
updateCategory,
|
|
deleteCategory,
|
|
}
|
|
}
|