import mongoose from "mongoose";

const uri = process.env.MONGODB_URI;
const dbName = process.env.MONGODB_DB;

if (!uri) throw new Error("MONGODB_URI ist nicht gesetzt (.env.local)");

type MongooseCache = {
  conn: typeof mongoose | null;
  promise: Promise<typeof mongoose> | null;
};

// Verhindert mehrfache Verbindungen bei Next.js Hot Reload im Dev-Modus.
const globalForMongoose = globalThis as unknown as { rakkuMongoose?: MongooseCache };
const cache: MongooseCache = globalForMongoose.rakkuMongoose ?? { conn: null, promise: null };
globalForMongoose.rakkuMongoose = cache;

export async function connectDB() {
  if (cache.conn) return cache.conn;
  if (!cache.promise) {
    cache.promise = mongoose.connect(uri!, { dbName });
  }
  cache.conn = await cache.promise;
  return cache.conn;
}
