import mongoose from "mongoose";
import { env } from "@/config/env";

const globalForMongoose = globalThis as unknown as {
  mongoosePromise?: Promise<typeof mongoose>;
};

export async function connectDb() {
  if (mongoose.connection.readyState === 1) {
    return mongoose;
  }

  if (!globalForMongoose.mongoosePromise) {
    globalForMongoose.mongoosePromise = mongoose.connect(env.MONGODB_URI);
  }

  await globalForMongoose.mongoosePromise;
  return mongoose;
}

export async function disconnectDb() {
  if (mongoose.connection.readyState !== 0) {
    await mongoose.disconnect();
  }
  globalForMongoose.mongoosePromise = undefined;
}
