-
Notifications
You must be signed in to change notification settings - Fork 12
/
Copy pathconnections.ts
82 lines (68 loc) · 3.09 KB
/
connections.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { AndesCache } from '@andes/core';
import { Connections as loggerConnections } from '@andes/log';
import * as debug from 'debug';
import * as mongoose from 'mongoose';
import * as configPrivate from './config.private';
function schemaDefaults(schema) {
schema.set('toJSON', {
virtuals: true,
versionKey: false
});
}
export class Connections {
static main: mongoose.Connection;
static snomed: mongoose.Connection;
static puco: mongoose.Connection = mongoose.createConnection();
static logs: mongoose.Connection = mongoose.createConnection();
/**
* Inicializa las conexiones a MongoDB
*
* @static
*
* @memberOf Connections
*/
static initialize() {
// Configura Mongoose
(mongoose as any).Promise = global.Promise;
mongoose.plugin(schemaDefaults);
// Configura logger de consultas
const queryLogger = debug('mongoose');
if (queryLogger.enabled) {
mongoose.set('debug', (collection, method, query, arg1, arg2, arg3) => queryLogger('%s.%s(%o) %s %s', collection, method, query, (arg2 || ''), (arg3 || '')));
}
if (process.env.NODE_ENV === 'test') {
// eslint-disable-next-line no-console
console.log('TESTING MODE');
configPrivate.hosts.mongoDB_main.host = 'mongodb://localhost:27066/andes';
configPrivate.hosts.mongoDB_puco.host = 'mongodb://localhost:27066/andes';
configPrivate.logDatabase.log.host = 'mongodb://localhost:27066/andes';
}
// Conecta y configura conexiones
// 1. PRINCIPAL
mongoose.connect(configPrivate.hosts.mongoDB_main.host, configPrivate.hosts.mongoDB_main.options);
this.main = mongoose.connection;
// 2. PUCO
this.puco = mongoose.createConnection(configPrivate.hosts.mongoDB_puco.host, configPrivate.hosts.mongoDB_puco.options);
// 3. LOGGER
loggerConnections.initialize(configPrivate.logDatabase.log.host, configPrivate.logDatabase.log.options);
this.logs = mongoose.createConnection(configPrivate.logDatabase.log.host, configPrivate.logDatabase.log.options);
// Configura eventos
this.configEvents('main', this.main);
this.configEvents('puco', this.puco);
this.configEvents('logs', this.logs);
}
private static configEvents(name: string, connection: mongoose.Connection) {
const connectionLog = debug('mongoose:' + name);
connection.on('connecting', () => connectionLog('connecting ...'));
connection.on('error', (error) => connectionLog(`error: ${error}`));
connection.on('connected', () => connectionLog('connected'));
connection.on('reconnected', () => connectionLog('reconnected'));
connection.on('disconnected', () => connectionLog('disconnected'));
}
}
export let AppCache: AndesCache;
if (configPrivate.RedisWebSockets.active) {
AppCache = new AndesCache({ adapter: 'redis', port: configPrivate.RedisWebSockets.port, host: configPrivate.RedisWebSockets.host });
} else {
AppCache = new AndesCache({ adapter: 'memory' });
}