-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathdatabase.service.js
More file actions
70 lines (64 loc) · 2.11 KB
/
database.service.js
File metadata and controls
70 lines (64 loc) · 2.11 KB
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
"use strict";
const mongoose = require("mongoose");
const logger = require("./logger.service");
const Q = require("q");
const TAG = "[ DATABASE SERVICE ]";
const env = require("./env.service");
// if DB is defined as an env var, it will go there, elsewise, try local
// you ideally set DB to your database uri that the provider gives you
// it should be easily findable
// DATABASE SERVICE
function getAddressFromEnvironment() {
return env.isDevelopment()
? process.env.DB_ADDRESS_DEV
: env.isProduction()
? process.env.DB_ADDRESS_DEPLOY
: process.env.DB_ADDRESS_TEST;
}
function getUserFromEnvironment() {
return env.isDevelopment()
? process.env.DB_USER_DEV
: env.isProduction()
? process.env.DB_USER_DEPLOY
: process.env.DB_USER_TEST;
}
function getPassFromEnvironment() {
return env.isDevelopment()
? process.env.DB_PASS_DEV
: env.isProduction()
? process.env.DB_PASS_DEPLOY
: process.env.DB_PASS_TEST;
}
module.exports = {
connect: function(callback) {
mongoose.Promise = Q.promise;
const user = getUserFromEnvironment();
const pass = getPassFromEnvironment();
const address = getAddressFromEnvironment();
const url =
!!user && !!pass
? `mongodb://${user}:${pass}@${address}`
: `mongodb://${address}`;
logger.info(`${TAG} Connecting to db on ${url}`);
mongoose
.connect(url)
.then(
function() {
logger.info(`${TAG} Connected to database on ${url}`);
if (callback) {
callback();
}
},
function(error) {
logger.error(
`${TAG} Failed to connect to database at ${url}. Error: ${error}`
);
throw `Failed to connect to database at ${url}`;
}
);
},
address: getAddressFromEnvironment(),
readyState: function() {
return mongoose.connection.readyState;
}
};