Spaces:
Sleeping
Sleeping
File size: 957 Bytes
53c9876 | 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 | import { MongoClient, Db } from 'mongodb';
const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/water_quality';
let cachedClient: MongoClient | null = null;
let cachedDb: Db | null = null;
export async function connectToDatabase() {
if (cachedClient && cachedDb) {
return { client: cachedClient, db: cachedDb };
}
const client = await MongoClient.connect(MONGODB_URI);
const db = client.db();
// Create indexes for efficient querying
await db.collection('sensors').createIndex({ sensorId: 1 }, { unique: true });
await db.collection('sensors').createIndex({ location: '2dsphere' });
await db.collection('readings').createIndex({ sensorId: 1, timestamp: -1 });
await db.collection('readings').createIndex({ timestamp: -1 });
cachedClient = client;
cachedDb = db;
return { client, db };
}
export async function getDatabase(): Promise<Db> {
const { db } = await connectToDatabase();
return db;
}
|