-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
52 lines (42 loc) · 1.42 KB
/
index.js
File metadata and controls
52 lines (42 loc) · 1.42 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
import Promise from 'bluebird';
import models from './models'
import uuid from 'uuid/v4';
const mongoose = require('mongoose');
export default function mongoAddon(kube) {
const mongoNamespace = kube.namespace('mongo');
kube['mongoose'] = mongoose;
kube.mongoose.Promise = Promise;
kube.loadModule(models);
kube.logger.trace('setting up mongo connection');
const { MONGO_URL, DB_NAME, DB_UNAME, DB_PASSWORD } = process.env;
const connectionString = `mongodb://${DB_UNAME}:${DB_PASSWORD}@${MONGO_URL}/${DB_NAME}?readPreference=secondary`
mongoNamespace.defSync(function createModel(name, data = {}) {
if(!name || name.length < 1 || name == '') {
return
}
const foundModel = kube.mongoose.model(name)
if(foundModel) {
return new foundModel(data);
}
return null;
})
mongoNamespace.defSync(function baseModel(name) {
if(!name || name.length < 1 || name == '') {
return
}
const foundModel = kube.mongoose.model(name)
return foundModel ? foundModel : null;
})
return kube.mongoose.connect(connectionString)
.then(function handleConnection(client, err) {
if(err) {
throw new Error(err);
}
kube.logger.info({DB_NAME}, 'New connection to mongodb open');
return client;
})
.catch(function handleMongoConnectionError(err) {
console.log(err)
kube.logger.error({err}, 'Error while connecting to mongodb');
})
}