diff options
author | 2022-03-29 08:18:11 -0400 | |
---|---|---|
committer | 2022-03-29 08:18:11 -0400 | |
commit | ecbcc8c42cab4b043821bbc31574397fdbf9d481 (patch) | |
tree | 206c81382bfef18d8b6a390b24f6a8185f827c0e /examples/ssr/src/pages/api/cart.ts | |
parent | f89dc5c04afbcc63636d2f63cdf7a92ebd80acc4 (diff) | |
download | astro-ecbcc8c42cab4b043821bbc31574397fdbf9d481.tar.gz astro-ecbcc8c42cab4b043821bbc31574397fdbf9d481.tar.zst astro-ecbcc8c42cab4b043821bbc31574397fdbf9d481.zip |
Make it deployable to Netlify (#2931)
Diffstat (limited to 'examples/ssr/src/pages/api/cart.ts')
-rw-r--r-- | examples/ssr/src/pages/api/cart.ts | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/examples/ssr/src/pages/api/cart.ts b/examples/ssr/src/pages/api/cart.ts new file mode 100644 index 000000000..5dbe5acbd --- /dev/null +++ b/examples/ssr/src/pages/api/cart.ts @@ -0,0 +1,47 @@ +import lightcookie from 'lightcookie'; +import { userCartItems } from '../../models/session'; + +export function get(_params: any, request: Request) { + let cookie = request.headers.get('cookie'); + let userId = cookie ? lightcookie.parse(cookie)['user-id'] : '1'; // default for testing + 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(_params: any, request: Request) { + const item: AddToCartItem = await request.json(); + + let cookie = request.headers.get('cookie'); + let userId = lightcookie.parse(cookie)['user-id']; + + 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 + }) + }; +} |