diff --git a/package.json b/package.json index d69d5dc..2ae87b7 100644 --- a/package.json +++ b/package.json @@ -99,6 +99,7 @@ "prettier": "^3.2.5", "serverless-esbuild": "^1.55.1", "serverless-offline": "^14.4.0", + "serverless-plugin-split-stacks": "^1.14.0", "source-map-support": "^0.5.21", "supertest": "^6.3.4", "ts-jest": "^29.1.2", diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 26c22c3..9ef55b8 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -1,6 +1,7 @@ generator client { provider = "prisma-client-js" - binaryTargets = ["native", "rhel-openssl-3.0.x"] // Add Linux target + engineType = "binary" + binaryTargets = ["native", "rhel-openssl-3.0.x"] // Lambda Node 18/20 (Amazon Linux) target previewFeatures = ["multiSchema"] } diff --git a/serverless.yml b/serverless.yml index 49909c9..3427180 100644 --- a/serverless.yml +++ b/serverless.yml @@ -16,6 +16,11 @@ provider: runtime: nodejs22.x region: ap-south-1 stage: ${opt:stage, 'dev'} + deploymentBucket: + # use a fixed bucket name to prevent Serverless from creating/quashing a resource + name: serverless-framework-deployments-ap-south-1-50264b8e-d2b9 + # optionally uncomment below to enable serverless to create if missing + # serverSideEncryption: AES256 versionFunctions: false memorySize: 512 # Apply Prisma layer to all functions @@ -73,10 +78,6 @@ provider: - 'arn:aws:s3:::${env:S3_BUCKET_NAME}' - 'arn:aws:s3:::${env:S3_BUCKET_NAME}/*' -custom: - serverless-offline: - reloadHandler: true - build: esbuild: bundle: true @@ -149,4 +150,20 @@ functions: - ${file(./serverless/functions/user.yml)} plugins: - - serverless-offline \ No newline at end of file + - serverless-offline + - serverless-plugin-split-stacks + +custom: + serverless-offline: + reloadHandler: true + + # split-stacks configuration to avoid CloudFormation resource limit + splitStacks: + perType: true + # You can fine‑tune to exclude resource types that don't need splitting + exclude: + - AWS::Lambda::Permission + - AWS::Logs::LogGroup + - AWS::IAM::Role + - AWS::IAM::Policy # keep deployment bucket in main stack to avoid dependency errors + - AWS::S3::Bucket \ No newline at end of file diff --git a/serverless/functions/host.yml b/serverless/functions/host.yml index 0f5e645..9b19ed0 100644 --- a/serverless/functions/host.yml +++ b/serverless/functions/host.yml @@ -1,21 +1,21 @@ # Host Module Functions # All authentication and host management endpoints -# getHosts: -# handler: src/modules/host/handlers/host.handler -# memorySize: 384 -# package: -# patterns: -# - 'src/modules/host/handlers/host.*' -# - 'src/modules/host/services/**' -# - ${file(./serverless/patterns/base.yml):pattern1} -# - ${file(./serverless/patterns/base.yml):pattern2} -# - ${file(./serverless/patterns/base.yml):pattern3} -# - ${file(./serverless/patterns/base.yml):pattern4} -# events: -# - httpApi: -# path: /host -# method: get +getHosts: + handler: src/modules/host/handlers/host.handler + memorySize: 384 + package: + patterns: + - 'src/modules/host/handlers/host.*' + - 'src/modules/host/services/**' + - ${file(./serverless/patterns/base.yml):pattern1} + - ${file(./serverless/patterns/base.yml):pattern2} + - ${file(./serverless/patterns/base.yml):pattern3} + - ${file(./serverless/patterns/base.yml):pattern4} + events: + - httpApi: + path: /host + method: get verifyOTP: handler: src/modules/host/handlers/Host_Admin/onboarding/verifyOTP.handler diff --git a/src/modules/host/handlers/updateHostProfile.ts b/src/modules/host/handlers/updateHostProfile.ts index 3058045..259e2b9 100644 --- a/src/modules/host/handlers/updateHostProfile.ts +++ b/src/modules/host/handlers/updateHostProfile.ts @@ -1,14 +1,14 @@ import { APIGatewayProxyEvent, APIGatewayProxyResult, Context } from 'aws-lambda'; +import AWS from 'aws-sdk'; import dayjs from 'dayjs'; import { z } from 'zod'; -import AWS from 'aws-sdk'; -import config from '../../../config/config'; import { prismaClient } from '../../../common/database/prisma.lambda.service'; import { verifyHostToken } from '../../../common/middlewares/jwt/authForHost'; +import { ROLE } from '../../../common/utils/constants/common.constant'; import { safeHandler } from '../../../common/utils/handlers/safeHandler'; import ApiError from "../../../common/utils/helper/ApiError"; -import { ROLE } from '../../../common/utils/constants/common.constant'; import { parseMultipartFormData } from '../../../common/utils/helper/parseMultipartFormData'; +import config from '../../../config/config'; const s3 = new AWS.S3({ region: config.aws.region, @@ -337,7 +337,7 @@ export const handler = safeHandler(async ( body: JSON.stringify({ success: true, message: 'Profile updated successfully', - data: result, + data : null// no data payload per request }), }; });