blob: 8d64ec7d84ded6b8611da633511123265cebc0bc (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
import type { APIContext } from 'astro';
import { userCartItems } from '../../models/session';
export function GET({ cookies }: APIContext) {
let userId = cookies.get('user-id')?.value;
if (!userId || !userCartItems.has(userId)) {
return Response.json({ items: [] });
}
let items = userCartItems.get(userId);
let array = Array.from(items.values());
return Response.json({ items: array });
}
interface AddToCartItem {
id: number;
name: string;
}
export async function POST({ cookies, request }: APIContext) {
const item: AddToCartItem = await request.json();
let userId = cookies.get('user-id')?.value;
if (!userCartItems.has(userId)) {
userCartItems.set(userId, new Map());
}
let cart = userCartItems.get(userId);
if (cart.has(item.id)) {
cart.get(item.id).count++;
} else {
cart.set(item.id, { id: item.id, name: item.name, count: 1 });
}
return Response.json({ ok: true });
}
|