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 => { const token = event.headers['x-auth-token'] || event.headers['X-Auth-Token']; if (!token) { throw new ApiError(400, 'This is a protected route.'); } const userInfo = await verifyUserToken(token); const userId = Number(userInfo.id); const type = event.queryStringParameters?.type; const page = Number(event.queryStringParameters?.page ?? 1); const limit = Number(event.queryStringParameters?.limit ?? 20); const countryName = event.queryStringParameters?.countryName; const stateName = event.queryStringParameters?.stateName; const cityName = event.queryStringParameters?.cityName; if (!type) { throw new ApiError(400, 'Type is required'); } const result = await userService.viewMoreActivities( userId, type, page, limit, countryName, stateName, cityName ); return { statusCode: 200, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', }, body: JSON.stringify({ success: true, message: `${type} activities fetched successfully`, data: result, }), }; });