mirror of
https://github.com/ThisIsBenny/wishlist-app.git
synced 2025-06-07 05:57:41 +00:00
#3 add new endpoint to mark item as bought
Signed-off-by: Benny Samir Hierl <bennysamir@posteo.de>
This commit is contained in:
parent
bb5099d7d4
commit
dc920360dc
4 changed files with 29 additions and 6 deletions
|
@ -1,6 +1,6 @@
|
||||||
import { FastifyInstance } from 'fastify'
|
import { FastifyInstance } from 'fastify'
|
||||||
import { getAll, getBySlugUrl } from './read'
|
import { getAll, getBySlugUrl } from './read'
|
||||||
import { updateList, updateItem } from './update'
|
import { updateList, updateItem, itemBought } from './update'
|
||||||
import { createList, createItem } from './create'
|
import { createList, createItem } from './create'
|
||||||
import { deleteList, deleteItem } from './delete'
|
import { deleteList, deleteItem } from './delete'
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ export default async (app: FastifyInstance) => {
|
||||||
await app.route(createItem)
|
await app.route(createItem)
|
||||||
await app.route(updateList)
|
await app.route(updateList)
|
||||||
await app.route(updateItem)
|
await app.route(updateItem)
|
||||||
|
await app.route(itemBought)
|
||||||
await app.route(deleteList)
|
await app.route(deleteList)
|
||||||
await app.route(deleteItem)
|
await app.route(deleteItem)
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,3 +73,25 @@ export const updateItem = <RouteOptions>{
|
||||||
reply.send(await wishlist.updateItem(request.params.itemId, request.body))
|
reply.send(await wishlist.updateItem(request.params.itemId, request.body))
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const itemBought = <RouteOptions>{
|
||||||
|
method: 'POST',
|
||||||
|
url: '/:wishlistId/item/:itemId/bought',
|
||||||
|
schema: {
|
||||||
|
params: {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
wishlistId: { type: 'string' },
|
||||||
|
itemId: { type: 'number' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
response: {
|
||||||
|
200: wishlistItemResponseSchema,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
handler: async (request: updateItemRequest, reply: FastifyReply) => {
|
||||||
|
reply.send(
|
||||||
|
await wishlist.updateItem(request.params.itemId, { bought: true })
|
||||||
|
)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
|
@ -17,14 +17,14 @@ const fetch = async (slugText: string): Promise<void> => {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const updateItem = async (item: WishlistItem): Promise<void> => {
|
const itemBought = async (item: WishlistItem): Promise<void> => {
|
||||||
await client.put(`/wishlist/${item.wishlistId}/item/${item.id}`, item)
|
await client.post(`/wishlist/${item.wishlistId}/item/${item.id}/bought`, item)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useWishlistStore = () => {
|
export const useWishlistStore = () => {
|
||||||
return {
|
return {
|
||||||
list,
|
list,
|
||||||
fetch,
|
fetch,
|
||||||
updateItem,
|
itemBought,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,7 @@ const modal = useModal()
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
|
|
||||||
const { list, fetch, updateItem } = useWishlistStore()
|
const { list, fetch, itemBought } = useWishlistStore()
|
||||||
await fetch(route.params.slug as string)
|
await fetch(route.params.slug as string)
|
||||||
|
|
||||||
const notBoughtItems = computed(() => {
|
const notBoughtItems = computed(() => {
|
||||||
|
@ -31,7 +31,7 @@ const bought = async (item: WishlistItemType): Promise<void> => {
|
||||||
)
|
)
|
||||||
if (confirmed) {
|
if (confirmed) {
|
||||||
item.bought = true
|
item.bought = true
|
||||||
updateItem(item)
|
itemBought(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Add table
Reference in a new issue