diff --git a/prisma/migrations/20250329220850_/migration.sql b/prisma/migrations/20250329220850_/migration.sql new file mode 100644 index 0000000..21e404e --- /dev/null +++ b/prisma/migrations/20250329220850_/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE "miis" ADD COLUMN "tags" TEXT[]; diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 95b657b..aa0af65 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -62,8 +62,9 @@ model Session { model Mii { id BigInt @id @default(autoincrement()) userId String - name String + name String @db.VarChar(64) pictures String[] + tags String[] likes Int @default(0) createdAt DateTime @default(now()) diff --git a/src/app/components/like-button.tsx b/src/app/components/like-button.tsx new file mode 100644 index 0000000..f95030d --- /dev/null +++ b/src/app/components/like-button.tsx @@ -0,0 +1,31 @@ +"use client"; + +import { useState } from "react"; +import { redirect } from "next/navigation"; +import { Icon } from "@iconify/react"; + +interface Props { + likes: number; + isLoggedIn: boolean; +} + +export default function LikeButton({ likes, isLoggedIn }: Props) { + const [isLiked, setIsLiked] = useState(false); + const [likesState, setLikesState] = useState(likes); + + const onClick = () => { + if (!isLoggedIn) redirect("/login"); + + setIsLiked((prev) => !prev); + setLikesState((prev) => (isLiked ? prev - 1 : prev + 1)); + + // todo: update database + }; + + return ( + + ); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 9e6e80a..0e5b53f 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -23,7 +23,7 @@ export default function RootLayout({