diff --git a/bun.lockb b/bun.lockb index 75053a9..68dfbff 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/db/db.ts b/db/db.ts index 6d1f46c..e3605e0 100644 --- a/db/db.ts +++ b/db/db.ts @@ -12,4 +12,8 @@ const prisma = globalThis.prismaGlobal ?? prismaClientSingleton(); export default prisma; +export type PrismaTransactionalClient = Parameters< + Parameters[0] +>[0]; + if (process.env.NODE_ENV !== 'production') globalThis.prismaGlobal = prisma; diff --git a/package.json b/package.json index 526334c..1125fdb 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "build": "next build", "vercel-build": "npx prisma generate && next build", "start": "next start", - "lint": "next lint" + "lint": "next lint", + "type-check":"tsc --noEmit --watch" }, "dependencies": { "@next-auth/prisma-adapter": "^1.0.7", diff --git a/src/app/api/room/[roomId]/leave/route.ts b/src/app/api/room/[roomId]/leave/route.ts index 9b236fa..809b034 100644 --- a/src/app/api/room/[roomId]/leave/route.ts +++ b/src/app/api/room/[roomId]/leave/route.ts @@ -1,4 +1,3 @@ -// @ts-nocheck import { getServerSession } from 'next-auth'; import { authOptions } from '../../../../../../lib/auth'; import prisma from '../../../../../../db/db'; diff --git a/src/app/api/room/[roomId]/notifications/route.ts b/src/app/api/room/[roomId]/notifications/route.ts index 3593968..ff1a721 100644 --- a/src/app/api/room/[roomId]/notifications/route.ts +++ b/src/app/api/room/[roomId]/notifications/route.ts @@ -1,4 +1,3 @@ -// @ts-nocheck import prisma from '../../../../../../db/db'; import { NextResponse } from 'next/server'; @@ -12,17 +11,6 @@ export async function GET( const room = await prisma.room.findUnique({ where: { id: roomId }, include: { notifications: { orderBy: { createdAt: 'desc' } } }, - // include: { - // notifications: { - // select: { - // id: true, - // message: true, - // createdAt: true, - // color: true, - // }, - // orderBy: { createdAt: "desc" }, - // }, - // }, }); if (!room) { diff --git a/src/app/api/room/[roomId]/route.ts b/src/app/api/room/[roomId]/route.ts index a71a070..1aa54de 100644 --- a/src/app/api/room/[roomId]/route.ts +++ b/src/app/api/room/[roomId]/route.ts @@ -1,4 +1,3 @@ -// @ts-nocheck import { NextResponse } from 'next/server'; import { authOptions } from '../../../../../lib/auth'; import { getServerSession } from 'next-auth'; diff --git a/src/app/api/room/create/route.ts b/src/app/api/room/create/route.ts index a13a7f7..b74decb 100644 --- a/src/app/api/room/create/route.ts +++ b/src/app/api/room/create/route.ts @@ -1,6 +1,5 @@ -// @ts-nocheck import { NextResponse } from 'next/server'; -import prisma from '../../../../../db/db'; +import prisma, { PrismaTransactionalClient } from '../../../../../db/db'; import { getServerSession } from 'next-auth'; import { authOptions } from '../../../../../lib/auth'; import { GenerateRoomCode } from '../../../../../lib/roomCode'; @@ -21,42 +20,44 @@ export async function POST(req: Request, res: Response) { const roomCode: string = await GenerateRoomCode(); - const newRoom = await prisma.$transaction(async (prisma) => { - const newRoom = await prisma.room.create({ - data: { - name: roomName, - code: roomCode, - creator: { - connect: { id: session.user.id }, - }, - participants: { - create: { - user: { - connect: { id: session.user.id }, + const newRoom = await prisma.$transaction( + async (prisma: PrismaTransactionalClient) => { + const newRoom = await prisma.room.create({ + data: { + name: roomName, + code: roomCode, + creator: { + connect: { id: session.user.id }, + }, + participants: { + create: { + user: { + connect: { id: session.user.id }, + }, }, }, }, - }, - include: { - creator: true, - participants: { - include: { - user: true, + include: { + creator: true, + participants: { + include: { + user: true, + }, }, }, - }, - }); - await prisma.notification.create({ - data: { - roomId: newRoom.id, - message: `${ - session.user.leetCodeUsername || 'A new user' - } created the room ${roomName}`, - color: 'blue', - }, - }); - return newRoom; - }); + }); + await prisma.notification.create({ + data: { + roomId: newRoom.id, + message: `${ + session.user.leetCodeUsername || 'A new user' + } created the room ${roomName}`, + color: 'blue', + }, + }); + return newRoom; + }, + ); return NextResponse.json(newRoom, { status: 200 }); } catch (err) { diff --git a/src/app/api/room/invite/[invitecode]/route.ts b/src/app/api/room/invite/[invitecode]/route.ts index e8da8de..03916f5 100644 --- a/src/app/api/room/invite/[invitecode]/route.ts +++ b/src/app/api/room/invite/[invitecode]/route.ts @@ -1,8 +1,7 @@ -// @ts-nocheck import { getServerSession } from 'next-auth'; import { authOptions } from '../../../../../../lib/auth'; import { NextResponse } from 'next/server'; -import prisma from '../../../../../../db/db'; +import prisma, { PrismaTransactionalClient } from '../../../../../../db/db'; export async function GET( req: Request, @@ -49,37 +48,39 @@ export async function GET( ); } - const updatedRoom = await prisma.$transaction(async (prisma) => { - const updatedRoom = await prisma.room.update({ - where: { id: room.id }, - data: { - participants: { - create: { - userId: session.user.id, + const updatedRoom = await prisma.$transaction( + async (prisma: PrismaTransactionalClient) => { + const updatedRoom = await prisma.room.update({ + where: { id: room.id }, + data: { + participants: { + create: { + userId: session.user.id, + }, }, }, - }, - include: { - participants: { - include: { - user: true, + include: { + participants: { + include: { + user: true, + }, }, }, - }, - }); + }); - await prisma.notification.create({ - data: { - roomId: room.id, - message: `${ - session.user.leetCodeUsername || 'A new user' - } joined the room`, - color: 'join', - }, - }); + await prisma.notification.create({ + data: { + roomId: room.id, + message: `${ + session.user.leetCodeUsername || 'A new user' + } joined the room`, + color: 'join', + }, + }); - return updatedRoom; - }); + return updatedRoom; + }, + ); return NextResponse.json( { message: 'Room joined successfully', roomId: room.id, success: true }, diff --git a/src/app/api/room/join/route.ts b/src/app/api/room/join/route.ts index ec9b6e5..635e738 100644 --- a/src/app/api/room/join/route.ts +++ b/src/app/api/room/join/route.ts @@ -1,8 +1,7 @@ -// @ts-nocheck import { NextResponse } from 'next/server'; import { authOptions } from '../../../../../lib/auth'; import { getServerSession } from 'next-auth'; -import prisma from '../../../../../db/db'; +import prisma, { PrismaTransactionalClient } from '../../../../../db/db'; export async function POST(req: Request, res: Response) { const session = await getServerSession(authOptions); @@ -38,36 +37,38 @@ export async function POST(req: Request, res: Response) { ); } - const updatedRoom = await prisma.$transaction(async (prisma) => { - const updatedRoom = await prisma.room.update({ - where: { id: room.id }, - data: { - participants: { - create: { - userId: session.user.id, + const updatedRoom = await prisma.$transaction( + async (prisma: PrismaTransactionalClient) => { + const updatedRoom = await prisma.room.update({ + where: { id: room.id }, + data: { + participants: { + create: { + userId: session.user.id, + }, }, }, - }, - include: { - participants: { - include: { - user: true, + include: { + participants: { + include: { + user: true, + }, }, }, - }, - }); + }); - await prisma.notification.create({ - data: { - roomId: room.id, - color: 'join', - message: `${ - session.user.leetCodeUsername || 'A new user' - } joined the room`, - }, - }); - return updatedRoom; - }); + await prisma.notification.create({ + data: { + roomId: room.id, + color: 'join', + message: `${ + session.user.leetCodeUsername || 'A new user' + } joined the room`, + }, + }); + return updatedRoom; + }, + ); return NextResponse.json(updatedRoom, { status: 200 }); } catch (err) { diff --git a/src/app/api/room/joined/route.ts b/src/app/api/room/joined/route.ts index ce46f91..52be450 100644 --- a/src/app/api/room/joined/route.ts +++ b/src/app/api/room/joined/route.ts @@ -1,4 +1,3 @@ -// @ts-nocheck import { getServerSession } from 'next-auth'; import { authOptions } from '../../../../../lib/auth'; import { NextResponse } from 'next/server'; diff --git a/src/app/api/verify/route.ts b/src/app/api/verify/route.ts index 2cde1cd..39e24ee 100644 --- a/src/app/api/verify/route.ts +++ b/src/app/api/verify/route.ts @@ -1,4 +1,3 @@ -// @ts-nocheck import axios from 'axios'; import prisma from '../../../../db/db'; import { NextResponse } from 'next/server'; diff --git a/tsconfig.json b/tsconfig.json index 7b28589..9bb90ae 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,7 +7,7 @@ "noEmit": true, "esModuleInterop": true, "module": "esnext", - "moduleResolution": "bundler", + "moduleResolution": "node", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve",