From 3ba06b230b942a558059b03685ebfc31fd33b82c Mon Sep 17 00:00:00 2001 From: Bradley Shellnut Date: Wed, 6 Apr 2022 15:57:29 -0700 Subject: [PATCH] Adding ability to like/unlike a Tweet. --- src/routes/home/like.ts | 52 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 src/routes/home/like.ts diff --git a/src/routes/home/like.ts b/src/routes/home/like.ts new file mode 100644 index 0000000..8287850 --- /dev/null +++ b/src/routes/home/like.ts @@ -0,0 +1,52 @@ +import prisma from "$root/lib/prisma"; +import type { RequestHandler } from "@sveltejs/kit"; + +export const post: RequestHandler = async ({ request }) => { + const form = await request.formData() + const id = +form.get('id') + + const liked = await prisma.liked.count({ + where: { tweetId: id } + }) + + if (liked === 1) { + await prisma.liked.delete({ where: { tweetId: id } }) + + const count = await prisma.tweet.findUnique({ + where: { id }, + select: { likes: true } + }) + + await prisma.tweet.update({ + where: { id }, + data: { likes: count.likes -= 1 } + }) + + return { + status: 303, + headers: { location: '/home' } + } + } + + await prisma.liked.create({ + data: { + tweetId: id, + user: { connect: { id: 1 } } + } + }) + + const count = await prisma.tweet.findUnique({ + where: { id }, + select: { likes: true } + }) + + await prisma.tweet.update({ + where: { id }, + data: { likes: (count.likes += 1) } + }) + + return { + status: 303, + headers: { location: '/home' } + } +} \ No newline at end of file