import mongoose from 'mongoose' interface MongooseCache { conn: typeof mongoose | null promise: Promise | null } declare global { var mongoose: MongooseCache | undefined } const cached: MongooseCache = global.mongoose || { conn: null, promise: null } if (!global.mongoose) { global.mongoose = cached } export default async function connectToDatabase(): Promise { if (cached.conn) { return cached.conn } if (!cached.promise) { const MONGODB_URI = process.env.MONGODB_URI if (!MONGODB_URI) { throw new Error('Please define the MONGODB_URI environment variable') } cached.promise = mongoose.connect(MONGODB_URI, { bufferCommands: false, }) } try { cached.conn = await cached.promise } catch (e) { cached.promise = null throw e } return cached.conn }