From c2d3081a14303592e25cacaf6b0224614ba1f6f7 Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 21:47:08 +0100 Subject: [PATCH 1/8] fix: removed .idea --- .gitignore | 1 + .idea/.gitignore | 5 ----- .idea/calendrier-avant.iml | 12 ------------ .idea/modules.xml | 8 -------- .idea/vcs.xml | 6 ------ 5 files changed, 1 insertion(+), 31 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/calendrier-avant.iml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index 12526e8..42a2804 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ yarn-error.log* next-env.d.ts env +/.idea/ \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index b58b603..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ diff --git a/.idea/calendrier-avant.iml b/.idea/calendrier-avant.iml deleted file mode 100644 index 24643cc..0000000 --- a/.idea/calendrier-avant.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 7ea0a9f..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From ff44beb61bb8c426bbfb2a54eea0bf12186ebfff Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 22:02:29 +0100 Subject: [PATCH 2/8] add: route to get user by key --- app/api/me/route.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/api/me/route.ts diff --git a/app/api/me/route.ts b/app/api/me/route.ts new file mode 100644 index 0000000..fe54c15 --- /dev/null +++ b/app/api/me/route.ts @@ -0,0 +1,24 @@ +import {NextRequest, NextResponse} from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(req: NextRequest){ + const key = req.nextUrl.searchParams.get("key"); + + if(!key) return NextResponse.json({error: "No key provided"}, {status: 400}); + + const user = await prisma.users.findUnique({ + where: { + key + } + }); + + if(!user) return NextResponse.json({error: "Key not found"}, {status: 404}); + + return NextResponse.json({ + id: user.id, + firstName: user.firstName, + lastName: user.lastName, + isTeacher: user.isTeacher, + }); + +} From a1fb215aa4bf138972d133f95b84d0280decba61 Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 22:05:03 +0100 Subject: [PATCH 3/8] fix: text --- app/page.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 99e9c00..0882eef 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,12 +1,18 @@ 'use client'; -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; export default function Home() { const [password, setPassword] = useState(''); const router = useRouter(); + useEffect(() => { + if (localStorage.getItem('@password')) { + router.push('/play'); + } + }, [router]); + function handleSubmit(event: React.FormEvent) { event.preventDefault(); @@ -15,9 +21,9 @@ export default function Home() { } return ( -
-

Calendrier-avent

-

Please enter the password :

+
+

Calendrier-avent

+

Merci d'entrer votre clé :

setPassword(e.target.value)}> From d9e1661a8f61b9213a9cb583d9948afdd7b73b91 Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 22:09:36 +0100 Subject: [PATCH 4/8] fix: duplicated entry (testOf in Users and Test) --- prisma/schema.prisma | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index a88e8f3..8a69b4e 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -9,15 +9,14 @@ generator client { } model Users { - id Int @id @default(autoincrement()) - key String @unique + id Int @id @default(autoincrement()) + key String @unique grades Grade[] firstName String lastName String - testOn DateTime? @db.Date - isTeacher Boolean @default(false) + isTeacher Boolean @default(false) test Test? - createdAt DateTime @default(now()) + createdAt DateTime @default(now()) } model Test { From cd681b095f7f4e4a35189c03727a90bbf6a8af60 Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 22:13:10 +0100 Subject: [PATCH 5/8] fix: change testOf from DateTime to Date --- prisma/schema.prisma | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 8a69b4e..9cd3a4f 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -23,7 +23,7 @@ model Test { id Int @id @default(autoincrement()) testOf Users @relation(fields: [testOfId], references: [id]) testOfId Int @unique - testOn DateTime @default(now()) + testOn DateTime @db.Date createdAt DateTime @default(now()) } From 8e78611aabc63dd593c58a9aff6a9b3cb4973597 Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 22:16:41 +0100 Subject: [PATCH 6/8] fix: me endpoint now return the test date if exist --- app/api/me/route.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/api/me/route.ts b/app/api/me/route.ts index fe54c15..ef79a32 100644 --- a/app/api/me/route.ts +++ b/app/api/me/route.ts @@ -7,6 +7,17 @@ export async function GET(req: NextRequest){ if(!key) return NextResponse.json({error: "No key provided"}, {status: 400}); const user = await prisma.users.findUnique({ + select: { + id: true, + firstName: true, + lastName: true, + isTeacher: true, + test: { + select: { + testOn: true + } + } + }, where: { key } @@ -19,6 +30,7 @@ export async function GET(req: NextRequest){ firstName: user.firstName, lastName: user.lastName, isTeacher: user.isTeacher, + testOn: user.test?.testOn }); } From 2fdbb9648890d6081587293cef3a2b871b1bde42 Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 22:23:34 +0100 Subject: [PATCH 7/8] add: route to get today's test --- app/api/test/route.ts | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 app/api/test/route.ts diff --git a/app/api/test/route.ts b/app/api/test/route.ts new file mode 100644 index 0000000..ebff42d --- /dev/null +++ b/app/api/test/route.ts @@ -0,0 +1,38 @@ +import {NextRequest, NextResponse} from "next/server"; +import prisma from "@/lib/prisma"; + +export async function GET(req: NextRequest){ + const date = req.nextUrl.searchParams.get("date"); + + const test = await prisma.test.findFirst({ + select: { + id: true, + testOn: true, + testOf: { + select: { + id: true, + firstName: true, + lastName: true, + isTeacher: true + } + } + }, + where: { + testOn: (date ? new Date(date) : new Date()) + } + }); + + if(!test){ + return NextResponse.json({error: "Test not found"}, {status: 404}); + } + + return NextResponse.json({ + id: test.id, + testOn: test.testOn, + testOf: { + firstName: test.testOf.firstName, + lastName: test.testOf.lastName, + isTeacher: test.testOf.isTeacher + } + }); +} From cecdc164f58a161309ff2fdab794d212a4faaa99 Mon Sep 17 00:00:00 2001 From: Fayorg Date: Tue, 5 Dec 2023 22:31:51 +0100 Subject: [PATCH 8/8] add: added swr --- package-lock.json | 21 +++++++++++++++++++++ package.json | 1 + 2 files changed, 22 insertions(+) diff --git a/package-lock.json b/package-lock.json index bdbb10a..dd86cdf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "react-dom": "^18", "socket.io": "^4.7.2", "socket.io-client": "^4.7.2", + "swr": "^2.2.4", "tailwind-merge": "^2.1.0", "tailwindcss-animate": "^1.0.7" }, @@ -4199,6 +4200,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swr": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.4.tgz", + "integrity": "sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==", + "dependencies": { + "client-only": "^0.0.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/tailwind-merge": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.1.0.tgz", @@ -4495,6 +4508,14 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", diff --git a/package.json b/package.json index 3f1848b..4a8f613 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "react-dom": "^18", "socket.io": "^4.7.2", "socket.io-client": "^4.7.2", + "swr": "^2.2.4", "tailwind-merge": "^2.1.0", "tailwindcss-animate": "^1.0.7" },