From 3e711cee181ddb133f98c4ae1aec97a45ee37dbe Mon Sep 17 00:00:00 2001 From: Mayank Mishra Date: Thu, 19 Feb 2026 15:50:48 +0530 Subject: [PATCH] Made get all connection details of user and fixed the issues in the schoolCompany table --- prisma/schema.prisma | 6 +-- .../getAllConnectionDetailsOfUser.ts | 44 +++++++++++++++++++ src/modules/user/services/user.service.ts | 19 ++++++++ 3 files changed, 66 insertions(+), 3 deletions(-) create mode 100644 src/modules/user/handlers/connections/getAllConnectionDetailsOfUser.ts diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 1d247f2..162ef1a 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -201,8 +201,6 @@ model ConnectDetails { user User @relation(fields: [userXid], references: [id], onDelete: Cascade) schoolCompanyXid Int @map("school_company_xid") schoolCompany SchoolCompany @relation(fields: [schoolCompanyXid], references: [id], onDelete: Restrict) - connectionXid Int @map("connection_xid") - connect Connections @relation(fields: [connectionXid], references: [id], onDelete: Cascade) isActive Boolean @default(true) @map("is_active") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") @@ -264,6 +262,8 @@ model SchoolCompany { id Int @id @default(autoincrement()) schoolCompanyName String @map("school_company_name") @db.VarChar(255) isSchool Boolean @map("is_school") + cityXid Int @map("city_xid") + cities Cities @relation(fields: [cityXid], references: [id], onDelete: Restrict) isActive Boolean @default(true) @map("is_active") createdAt DateTime @default(now()) @map("created_at") updatedAt DateTime @updatedAt @map("updated_at") @@ -354,6 +354,7 @@ model Cities { // 🔹 Activity relations checkInActivities Activities[] @relation("CheckInCity") checkOutActivities Activities[] @relation("CheckOutCity") + schoolCompanies SchoolCompany[] @@map("cities") @@schema("mst") @@ -696,7 +697,6 @@ model Connections { updatedAt DateTime @updatedAt @map("updated_at") deletedAt DateTime? @map("deleted_at") User User[] - connectDetails ConnectDetails[] @@map("connections") @@schema("mst") diff --git a/src/modules/user/handlers/connections/getAllConnectionDetailsOfUser.ts b/src/modules/user/handlers/connections/getAllConnectionDetailsOfUser.ts new file mode 100644 index 0000000..bea88d6 --- /dev/null +++ b/src/modules/user/handlers/connections/getAllConnectionDetailsOfUser.ts @@ -0,0 +1,44 @@ +import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda'; +import { safeHandler } from '../../../../common/utils/handlers/safeHandler'; +import { prismaClient } from '../../../../common/database/prisma.lambda.service'; +import ApiError from '../../../../common/utils/helper/ApiError'; +import { UserService } from '../../services/user.service'; +import { verifyUserToken } from '../../../../common/middlewares/jwt/authForUser'; + +const userService = new UserService(prismaClient); + +export const handler = safeHandler(async ( + event: APIGatewayProxyEvent, + context?: Context +): Promise => { + // Extract token from headers + const token = event.headers['x-auth-token'] || event.headers['X-Auth-Token']; + if (!token) { + throw new ApiError(400, 'This is a protected route. Please provide a valid token.'); + } + + // Verify token and get user info + const userInfo = await verifyUserToken(token); + const userId = Number(userInfo.id); + + if (!userId || isNaN(userId)) { + throw new ApiError(400, 'Invalid user ID'); + } + + // Fetch user with their HostHeader stepper info + const result = await userService.getAllConnectionDetailsOfUser(userId); + + return { + statusCode: 200, + headers: { + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + }, + body: JSON.stringify({ + success: true, + message: 'Data retrieved successfully', + data: result, + }), + }; +}); + diff --git a/src/modules/user/services/user.service.ts b/src/modules/user/services/user.service.ts index 914b948..27a9ec6 100644 --- a/src/modules/user/services/user.service.ts +++ b/src/modules/user/services/user.service.ts @@ -1809,4 +1809,23 @@ export class UserService { return activitiesWithCounts; } + + + // CONNECTIONS + + async getAllConnectionDetailsOfUser(userXid: number) { + return await this.prisma.connectDetails.findMany({ + where: { userXid, isActive: true }, + select: { + id: true, + schoolCompany: { + select: { + id: true, + schoolCompanyName: true, + isSchool: true, + } + } + } + }) + } } \ No newline at end of file