-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdb.ts
54 lines (44 loc) · 1.02 KB
/
db.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import mongoose, { Mongoose } from "mongoose";
const MONGODB_URL = process.env.MONGODB_URL!;
interface MongooseConn {
conn: Mongoose | null;
promise: Promise<Mongoose> | null;
}
let cached: MongooseConn = (global as any).mongoose;
if (!cached) {
cached = (global as any).mongoose = {
conn: null,
promise: null,
};
}
export let isConnected = false;
export const connect = async () => {
if (isConnected) return;
if (cached.conn) {
isConnected = true;
return cached.conn;
}
if (!MONGODB_URL) {
throw new Error("MONGODB_URL is not defined");
}
try {
cached.promise =
cached.promise ||
mongoose.connect(MONGODB_URL, {
dbName: "nexus",
bufferCommands: false,
connectTimeoutMS: 10000,
});
cached.conn = await cached.promise;
isConnected = true;
console.log("Database connected successfully");
return cached.conn;
} catch (error) {
isConnected = false;
console.error("Database connection error:", error);
throw error;
}
};
export function checkConnection() {
return isConnected;
}