UNPKG

@carlosbajo/roket-micro

Version:

framework para microservicios con google/pubsub

62 lines (55 loc) 2.15 kB
const mongoose = require('mongoose'); const Boom = require('boom'); const winston = require('winston'); const Redis = require('ioredis'); const { MongoClient } = require('mongodb'); // eslint-disable-line const fs = require('fs'); console.log(process.env.GOOGLE_APPLICATION_CREDENTIALS); const fileKey = fs.readFileSync(process.env.GOOGLE_APPLICATION_CREDENTIALS); // eslint-disable-line const key = JSON.parse(fileKey); console.log(key); const isLocal = key.client_email.includes('local'); module.exports = { connect: (config) => { let datasource; const mongoUrl = process.env.MONGO_URL || 'mongo'; const mongod = process.env.MONGO_DATABASE || 'test'; const ssl = process.env.SSL || true; const replicaSet = process.env.REPLICASET || 'rs0'; const authSource = process.env.AUTHSOURCE || 'admin'; const conMongo = `${mongoUrl}/${mongod}`; const options = { useMongoClient: true, } const redisUrl = process.env.REDIS_URL || 'redis'; const redisD = process.env.REDIS_DATABASE || '0'; const conRedis = `${redisUrl}/${redisD}`; switch (config) { case 'mongo': winston.info('Mongo complete url', `mongodb://${conMongo}`); datasource = mongoose.connect(`mongodb://${conMongo}`, options, (err) => { if (err) { throw err; } }); break; case 'redis': winston.info('Redis complete url', `redis://${conRedis}`); datasource = new Redis(6379, redisUrl, { connectTimeout: 999999 }); break; case 'mongoNative': if (isLocal) { winston.info('Mongo complete url', `mongodb://${conMongo}`); datasource = MongoClient.connect(`mongodb://${conMongo}`); } else { winston.info('Mongo complete url', `mongodb://${conMongo}?ssl=${ssl}&replicaSet=${replicaSet}&authSource=${authSource}`); datasource = MongoClient.connect(`mongodb://${conMongo}?ssl=${ssl}&replicaSet=${replicaSet}&authSource=${authSource}`); } break; default: throw Boom.conflict('No esta ese datasource'); } return datasource; } };