From 5b3deecab65d807c37c9f20c06ab0547659fd0f4 Mon Sep 17 00:00:00 2001 From: KaichiManabe <154493010+KaichiManabe@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:24:07 +0900 Subject: [PATCH 1/4] =?UTF-8?q?enrollments=E3=81=AE=E4=B8=AD=E3=81=A7eroll?= =?UTF-8?q?ments=E3=82=92p=E6=8E=A2=E3=81=99=E3=81=AE=E3=82=92=E7=84=A1?= =?UTF-8?q?=E3=81=97=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/database/client.ts | 1 + server/src/database/requests.ts | 1 - server/src/database/users.ts | 3 --- 3 files changed, 1 insertion(+), 4 deletions(-) diff --git a/server/src/database/client.ts b/server/src/database/client.ts index a447b6f9..4f5349a1 100644 --- a/server/src/database/client.ts +++ b/server/src/database/client.ts @@ -32,5 +32,6 @@ export const prisma = new PrismaClient( prisma.$on("query", (e) => { console.log(format(e.query, { language: "postgresql" })); console.log(`Params: ${e.params}`); + console.log(`d湯レーション: ${e.duration}`); console.log("\n"); }); diff --git a/server/src/database/requests.ts b/server/src/database/requests.ts index c73a3cd0..5efd922a 100644 --- a/server/src/database/requests.ts +++ b/server/src/database/requests.ts @@ -116,7 +116,6 @@ export async function getPendingRequestsToUser( include: { course: { include: { - enrollments: true, slots: true, }, }, diff --git a/server/src/database/users.ts b/server/src/database/users.ts index cdeb58ce..6428a5b3 100644 --- a/server/src/database/users.ts +++ b/server/src/database/users.ts @@ -31,7 +31,6 @@ export async function getUser(guid: GUID): Promise { include: { course: { include: { - enrollments: true, slots: true, }, }, @@ -84,7 +83,6 @@ export async function getUserByID( include: { course: { include: { - enrollments: true, slots: true, }, }, @@ -147,7 +145,6 @@ export async function getAllUsers(): Promise< include: { course: { include: { - enrollments: true, slots: true, }, }, From 3128b56a1e2109f2b7525a7103e01b3144a01cc8 Mon Sep 17 00:00:00 2001 From: KaichiManabe <154493010+KaichiManabe@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:24:32 +0900 Subject: [PATCH 2/4] add join --- server/prisma/schema.prisma | 2 +- server/src/database/courses.ts | 4 ++++ server/src/database/requests.ts | 3 +++ server/src/database/users.ts | 3 +++ server/src/firebase/auth/lib.ts | 2 +- server/src/index.ts | 1 + 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/server/prisma/schema.prisma b/server/prisma/schema.prisma index ee2c650f..b1bb051a 100644 --- a/server/prisma/schema.prisma +++ b/server/prisma/schema.prisma @@ -2,7 +2,7 @@ generator client { provider = "prisma-client-js" binaryTargets = ["native", "debian-openssl-3.0.x"] - previewFeatures = ["typedSql"] + previewFeatures = ["typedSql","relationJoins"] } datasource db { diff --git a/server/src/database/courses.ts b/server/src/database/courses.ts index edc2fe38..d5e489e8 100644 --- a/server/src/database/courses.ts +++ b/server/src/database/courses.ts @@ -5,6 +5,7 @@ import { prisma } from "./client"; export async function getCourseByCourseId(courseId: string): Promise { return ( (await prisma.course.findUnique({ + relationLoadStrategy: "join", where: { id: courseId, }, @@ -20,6 +21,7 @@ export async function getCourseByCourseId(courseId: string): Promise { */ export async function getCoursesByUserId(userId: UserID): Promise { return await prisma.course.findMany({ + relationLoadStrategy: "join", where: { enrollments: { some: { @@ -43,6 +45,7 @@ export async function getCourseByDayPeriodAndUserId( ): Promise { // TODO: findUnique で取れるような制約を掛ける return await prisma.course.findFirst({ + relationLoadStrategy: "join", where: { enrollments: { some: { @@ -70,6 +73,7 @@ export async function getCoursesByDayAndPeriod( period: number, ): Promise { return await prisma.course.findMany({ + relationLoadStrategy: "join", where: { slots: { some: { diff --git a/server/src/database/requests.ts b/server/src/database/requests.ts index 5efd922a..172bc0a6 100644 --- a/server/src/database/requests.ts +++ b/server/src/database/requests.ts @@ -103,6 +103,7 @@ export async function getPendingRequestsToUser( userId: UserID, ): Promise { const found = await prisma.user.findMany({ + relationLoadStrategy: "join", where: { sendingUsers: { some: { @@ -146,6 +147,7 @@ export async function getPendingRequestsFromUser( userId: UserID, ): Promise { const found = await prisma.user.findMany({ + relationLoadStrategy: "join", where: { receivingUsers: { some: { @@ -190,6 +192,7 @@ export async function getMatchedUser( userId: UserID, ): Promise { const found = await prisma.user.findMany({ + relationLoadStrategy: "join", where: { OR: [ { diff --git a/server/src/database/users.ts b/server/src/database/users.ts index 6428a5b3..2ac11d37 100644 --- a/server/src/database/users.ts +++ b/server/src/database/users.ts @@ -23,6 +23,7 @@ export async function createUser(partialUser: Omit): Promise { // ユーザーの取得 export async function getUser(guid: GUID): Promise { const user = await prisma.user.findUnique({ + relationLoadStrategy: "join", where: { guid: guid, }, @@ -75,6 +76,7 @@ export async function getUserByID( id: UserID, ): Promise { const user = await prisma.user.findUnique({ + relationLoadStrategy: "join", where: { id, }, @@ -140,6 +142,7 @@ export async function getAllUsers(): Promise< (User & { courses: Course[]; interestSubjects: InterestSubject[] })[] > { const users = await prisma.user.findMany({ + relationLoadStrategy: "join", include: { enrollments: { include: { diff --git a/server/src/firebase/auth/lib.ts b/server/src/firebase/auth/lib.ts index fdf4b12b..a7055341 100644 --- a/server/src/firebase/auth/lib.ts +++ b/server/src/firebase/auth/lib.ts @@ -11,7 +11,7 @@ type DecodedIdToken = admin.DecodedIdToken; // THROWS: if idToken is not present in request cookie, or when the token is not valid. export async function getGUID(c: Context): Promise { const idToken = c.req.header("Authorization"); - if (typeof idToken !== "string") error("token not found in query", 401); + if (typeof idToken !== "string") error("token not found in header", 401); return await getGUIDFromToken(idToken); } diff --git a/server/src/index.ts b/server/src/index.ts index 3592a82e..0ca738ec 100644 --- a/server/src/index.ts +++ b/server/src/index.ts @@ -31,6 +31,7 @@ if (corsOptions.origin.length > 1) { const app = new Hono() .onError((err, c) => { if (err instanceof HTTPException) { + console.error(err); c.status(err.status); return c.json({ error: err }); } From de5ee4b8d0e77db2dcbcfdf5c75f3aea75dc32dc Mon Sep 17 00:00:00 2001 From: naka-12 <104970808+naka-12@users.noreply.github.com> Date: Thu, 20 Feb 2025 19:56:25 +0900 Subject: [PATCH 3/4] prisma 5.22 --- bun.lock | 4 ++-- server/package.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/bun.lock b/bun.lock index ca198071..0187fe56 100644 --- a/bun.lock +++ b/bun.lock @@ -24,7 +24,7 @@ "version": "1.0.0", "dependencies": { "@hono/zod-validator": "^0.4.3", - "@prisma/client": "^5.20.0", + "@prisma/client": "5.22.0", "common": "workspace:common", "cookie-parser": "^1.4.6", "cors": "^2.8.5", @@ -41,7 +41,7 @@ "@types/cookie-parser": "^1.4.7", "@types/cors": "^2.8.17", "globals": "^15.8.0", - "prisma": "^5.11.0", + "prisma": "5.22.0", "typescript": "^5.4.5", }, }, diff --git a/server/package.json b/server/package.json index 3e4c2865..2f03087d 100644 --- a/server/package.json +++ b/server/package.json @@ -17,7 +17,7 @@ "license": "ISC", "dependencies": { "@hono/zod-validator": "^0.4.3", - "@prisma/client": "^5.20.0", + "@prisma/client": "5.22.0", "common": "workspace:common", "cookie-parser": "^1.4.6", "cors": "^2.8.5", @@ -34,7 +34,7 @@ "@types/cookie-parser": "^1.4.7", "@types/cors": "^2.8.17", "globals": "^15.8.0", - "prisma": "^5.11.0", + "prisma": "5.22.0", "typescript": "^5.4.5" }, "trustedPackages": ["prisma"] From ce2c6a9aeb11d10d9eebc549d2375388c2ba9682 Mon Sep 17 00:00:00 2001 From: naka-12 <104970808+naka-12@users.noreply.github.com> Date: Thu, 20 Feb 2025 21:38:25 +0900 Subject: [PATCH 4/4] =?UTF-8?q?relationLoadStrategy=20=E3=81=AE=E6=8C=87?= =?UTF-8?q?=E5=AE=9A=E3=82=92=E5=89=8A=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/database/client.ts | 2 +- server/src/database/courses.ts | 4 ---- server/src/database/requests.ts | 3 --- server/src/database/users.ts | 3 --- 4 files changed, 1 insertion(+), 11 deletions(-) diff --git a/server/src/database/client.ts b/server/src/database/client.ts index 4f5349a1..7c176ee9 100644 --- a/server/src/database/client.ts +++ b/server/src/database/client.ts @@ -32,6 +32,6 @@ export const prisma = new PrismaClient( prisma.$on("query", (e) => { console.log(format(e.query, { language: "postgresql" })); console.log(`Params: ${e.params}`); - console.log(`d湯レーション: ${e.duration}`); + console.log(`Duration: ${e.duration}`); console.log("\n"); }); diff --git a/server/src/database/courses.ts b/server/src/database/courses.ts index d5e489e8..edc2fe38 100644 --- a/server/src/database/courses.ts +++ b/server/src/database/courses.ts @@ -5,7 +5,6 @@ import { prisma } from "./client"; export async function getCourseByCourseId(courseId: string): Promise { return ( (await prisma.course.findUnique({ - relationLoadStrategy: "join", where: { id: courseId, }, @@ -21,7 +20,6 @@ export async function getCourseByCourseId(courseId: string): Promise { */ export async function getCoursesByUserId(userId: UserID): Promise { return await prisma.course.findMany({ - relationLoadStrategy: "join", where: { enrollments: { some: { @@ -45,7 +43,6 @@ export async function getCourseByDayPeriodAndUserId( ): Promise { // TODO: findUnique で取れるような制約を掛ける return await prisma.course.findFirst({ - relationLoadStrategy: "join", where: { enrollments: { some: { @@ -73,7 +70,6 @@ export async function getCoursesByDayAndPeriod( period: number, ): Promise { return await prisma.course.findMany({ - relationLoadStrategy: "join", where: { slots: { some: { diff --git a/server/src/database/requests.ts b/server/src/database/requests.ts index 172bc0a6..5efd922a 100644 --- a/server/src/database/requests.ts +++ b/server/src/database/requests.ts @@ -103,7 +103,6 @@ export async function getPendingRequestsToUser( userId: UserID, ): Promise { const found = await prisma.user.findMany({ - relationLoadStrategy: "join", where: { sendingUsers: { some: { @@ -147,7 +146,6 @@ export async function getPendingRequestsFromUser( userId: UserID, ): Promise { const found = await prisma.user.findMany({ - relationLoadStrategy: "join", where: { receivingUsers: { some: { @@ -192,7 +190,6 @@ export async function getMatchedUser( userId: UserID, ): Promise { const found = await prisma.user.findMany({ - relationLoadStrategy: "join", where: { OR: [ { diff --git a/server/src/database/users.ts b/server/src/database/users.ts index 2ac11d37..6428a5b3 100644 --- a/server/src/database/users.ts +++ b/server/src/database/users.ts @@ -23,7 +23,6 @@ export async function createUser(partialUser: Omit): Promise { // ユーザーの取得 export async function getUser(guid: GUID): Promise { const user = await prisma.user.findUnique({ - relationLoadStrategy: "join", where: { guid: guid, }, @@ -76,7 +75,6 @@ export async function getUserByID( id: UserID, ): Promise { const user = await prisma.user.findUnique({ - relationLoadStrategy: "join", where: { id, }, @@ -142,7 +140,6 @@ export async function getAllUsers(): Promise< (User & { courses: Course[]; interestSubjects: InterestSubject[] })[] > { const users = await prisma.user.findMany({ - relationLoadStrategy: "join", include: { enrollments: { include: {