22 lines
762 B
TypeScript
22 lines
762 B
TypeScript
import { Collection, Db, MongoClient } from 'mongodb'
|
|
import getConfig from 'next/config'
|
|
import { Resolvable } from '../utils/Resolvable'
|
|
import { GroupData, InsertMeta } from './groups'
|
|
import { logger } from '../utils/logger'
|
|
|
|
const {
|
|
serverRuntimeConfig: { MONGO_URL, MONGO_USER, MONGO_PASS, MONGO_DB }
|
|
} = getConfig()
|
|
|
|
async function getDatabase() {
|
|
const url = `mongodb://${MONGO_USER ? `${MONGO_USER}:${MONGO_PASS ?? ''}@` : ''}${MONGO_URL}`
|
|
const client = new MongoClient(url)
|
|
await client.connect()
|
|
logger.info('Connected successfully to server')
|
|
return client.db(MONGO_DB) as unknown as Omit<Db, 'collection'> & {
|
|
collection: (_: 'setups') => Collection<InsertMeta<GroupData>>
|
|
}
|
|
}
|
|
|
|
export const database = new Resolvable(getDatabase)
|