tracreport/src/database.ts

34 lines
968 B
TypeScript

import mongoose from "mongoose";
import { Report } from "./models/report.js";
let isConnected = false;
export async function initDb(): Promise<void> {
if (isConnected || mongoose.connection.readyState >= 1) return;
const {
MONGO_HOST = 'localhost',
MONGO_USER,
MONGO_PASS,
MONGO_NAME = 'tracreport',
MONGO_OPTS = '',
} = process.env
const credentials = MONGO_USER && MONGO_PASS
? `${encodeURIComponent(MONGO_USER)}:${encodeURIComponent(MONGO_PASS)}@`
: '';
const MONGO_URI = `mongodb://${credentials}${MONGO_HOST}/${MONGO_NAME}${MONGO_OPTS ? '?' + MONGO_OPTS : ''}`;
try {
await mongoose.connect(MONGO_URI);
isConnected = true;
console.log('✅ MongoDB connected');
await Report.syncIndexes();
console.log('✅ Indexes synced');
} catch (err) {
console.error('❌ MongoDB connection error:', err)
process.exit(1);
}
}