blob: 80db01f1672a099a55651d98f171f4ba91fe799f (
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
39
40
41
42
43
44
45
46
|
import { 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 {
body: JSON.stringify({ items: [] }),
};
}
let items = userCartItems.get(userId);
let array = Array.from(items.values());
return {
body: JSON.stringify({ 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 {
body: JSON.stringify({
ok: true,
}),
};
}
|