diff --git a/src/db.ts b/src/db.ts index fccf04bca4e..82c17e6d7e0 100644 --- a/src/db.ts +++ b/src/db.ts @@ -2,6 +2,8 @@ import mongoose from "mongoose"; import { MONGO_DB_URL } from "./constants"; import { logger } from "./libraries"; +let session!: mongoose.ClientSession; + export const connect = async (): Promise => { try { await mongoose.connect(MONGO_DB_URL as string, { @@ -10,6 +12,7 @@ export const connect = async (): Promise => { useFindAndModify: false, useNewUrlParser: true, }); + session = await mongoose.startSession(); } catch (error: unknown) { if (error instanceof Error) { const errorMessage = error.toString(); @@ -45,5 +48,8 @@ export const connect = async (): Promise => { }; export const disconnect = async (): Promise => { + session?.endSession(); await mongoose.connection.close(); }; + +export { session }; diff --git a/src/resolvers/Mutation/createEvent.ts b/src/resolvers/Mutation/createEvent.ts index 87a5884fbcd..cbdb3473735 100644 --- a/src/resolvers/Mutation/createEvent.ts +++ b/src/resolvers/Mutation/createEvent.ts @@ -11,7 +11,8 @@ import { isValidString } from "../../libraries/validators/validateString"; import { compareDates } from "../../libraries/validators/compareDates"; import { EventAttendee } from "../../models/EventAttendee"; import { cacheEvents } from "../../services/EventCache/cacheEvents"; -import mongoose from "mongoose"; +import type mongoose from "mongoose"; +import { session } from "../../db"; /** * This function enables to create an event. @@ -120,7 +121,6 @@ export const createEvent: MutationResolvers["createEvent"] = async ( ); } - const session = await mongoose.startSession(); session.startTransaction(); try { @@ -151,7 +151,6 @@ export const createEvent: MutationResolvers["createEvent"] = async ( } await session.commitTransaction(); - session.endSession(); if (!createdEvent) { throw new Error(requestContext.translate("Failed to create event!")); @@ -161,7 +160,6 @@ export const createEvent: MutationResolvers["createEvent"] = async ( return createdEvent[0].toObject(); } catch (error) { await session.abortTransaction(); - session.endSession(); throw error; } /* Commenting out this notification code coz we don't use firebase anymore.