node-tenancy
Version:
Automatic multi-tenancy for Node with support to Rabbitmq
86 lines (67 loc) • 2.27 kB
JavaScript
require('dotenv').config();
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const bodyParser = require('body-parser');
const cors = require('cors');
/* --------------------Database---------------------- */
const mongoose = require('mongoose');
const {config, TenantSchema} = require('node-tenancy');
const generate_id = require('mongoose').Types;
const userSchema = new mongoose.Schema({
_id: generate_id.ObjectId,
username: String,
image: String,
meta_data: JSON,
created_at: {type: Number, default: Math.floor(Date.now() / 1000)},
});
config.setConfig({
"central_domains": [
"test"
],
"tenant_schemas": {
"User": userSchema,
},
"central_schemas": {
'Tenant': TenantSchema,
},
});
/* ---------------------Queue Sender and Receiver---------------------- */
// const queueClass = require('./app/jobs/queue');
// queueClass.getMessages('support_test', true);
// queueClass.publishMessage('support_test', {'message': 'test'}, true);
/* ---------------------Routes DIR---------------------- */
const indexRouter = require('./routes/index');
const app = express();
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use(bodyParser.json()); // only parses json data
app.use(bodyParser.urlencoded({ // handles the urlencoded bodies
extended: true
}));
/*enable cors*/
app.use(cors());
/* -----------------Routers-------------------- */
app.use('/api/', indexRouter);
// catch 404 and forward to error handler
app.use(function (Request, Response, Next) {
return Response.status(404).json("Route not found");
});
// Optional fallthrough error handler
app.use(function onError(err, req, res, next) {
// The error id is attached to `res.sentry` to be returned
// and optionally displayed to the user for support.
res.statusCode = 500;
console.log(err);
});
const server = require('http').createServer(app);
//server won't go down but will put errors in log
process.on('uncaughtException', function (error) {
throw new Error(error.message);
});
server.listen(8000);
module.exports = app;