Files
payload/src/index.js
2019-12-26 10:09:06 -05:00

56 lines
1.7 KiB
JavaScript

import connectMongoose from './init/connectMongoose';
import registerExpressMiddleware from './init/registerExpressMiddleware';
import initUploads from './init/uploads';
import initPassport from './init/passport';
import initCORS from './init/cors';
import initWebpack from './init/webpack';
import registerConfigRoute from './routes/config';
import validateCollection from './collections/validate';
import registerCollectionSchema from './collections/registerSchema';
import registerCollectionRoutes from './collections/registerRoutes';
import validateGlobals from './globals/validate';
import registerGlobalSchema from './globals/registerSchema';
import registerGlobalRoutes from './globals/registerRoutes';
class Payload {
collections = {};
constructor(options) {
this.config = options.config;
this.app = options.app;
this.router = options.router;
connectMongoose(options.config.mongoURL);
registerExpressMiddleware(options);
initUploads(options);
initPassport(this.app);
initCORS(options);
registerConfigRoute(options, this.getCollections, this.getGlobals);
if (!this.config.disableAdmin) {
initWebpack(options);
}
}
registerCollection = (collection) => {
validateCollection(collection, this.collections, this.User);
this.collections[collection.slug] = registerCollectionSchema(collection, this.config);
registerCollectionRoutes(this.collections[collection.slug], this.router);
};
registerGlobals = (globals) => {
validateGlobals(globals);
this.globals = registerGlobalSchema(globals, this.config);
registerGlobalRoutes(this.globals.model, this.router);
};
getCollections = () => this.collections;
getGlobals = () => this.globals;
}
module.exports = Payload;