52 lines
1.4 KiB
JavaScript
52 lines
1.4 KiB
JavaScript
const Data = require('./Data')
|
|
const Page = require('./Page')
|
|
const Article = require('./Article')
|
|
const Album = require('./Album')
|
|
const Teacher = require('./Teacher')
|
|
const Document = require('./Document')
|
|
const Image = require('./Image')
|
|
const Settings = require('./Config')
|
|
const getConfig = require('next/config').default
|
|
|
|
const { MongoClient, ObjectId } = require('mongodb')
|
|
|
|
var db
|
|
|
|
async function connect() {
|
|
if (db) {
|
|
return db
|
|
}
|
|
const mongoUri = getConfig().serverRuntimeConfig.dbUri
|
|
const connection = await MongoClient.connect(mongoUri)
|
|
db = init(connection)
|
|
return db
|
|
}
|
|
|
|
function collection(name) {
|
|
return db.collection(name)
|
|
}
|
|
|
|
function id(i) {
|
|
if (typeof i === 'string') return ObjectId(i)
|
|
else if (i instanceof ObjectId) return i
|
|
else if (i instanceof Object) return '_id' in i ? ObjectId(i._id) : null
|
|
return null
|
|
}
|
|
|
|
function init(db) {
|
|
// Data.setStore('Page', db.collection('pages'))
|
|
Data.setStore(Page, db.collection('pages'))
|
|
Data.setStore(Article, db.collection('articles'))
|
|
Data.setStore(Album, db.collection('albums'))
|
|
Data.setStore(Image, db.collection('images'))
|
|
Data.setStore(Teacher, db.collection('collective'))
|
|
Data.setStore(Document, db.collection('documents'))
|
|
Data.setStore(Settings, db.collection('settings'))
|
|
|
|
return db
|
|
}
|
|
|
|
exports.connect = connect
|
|
exports.collection = collection
|
|
exports.c = collection
|
|
exports.id = id |