| 
									
										
										
										
											2018-01-10 15:31:54 +01:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-12 22:21:26 -05:00
										 |  |  | // Public node modules
 | 
					
						
							|  |  |  | const rimraf = require('rimraf'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-10 15:31:54 +01:00
										 |  |  | module.exports = (scope, success, error) => { | 
					
						
							| 
									
										
										
										
											2018-09-12 22:03:31 -05:00
										 |  |  |   const Mongoose = require('mongoose'); | 
					
						
							| 
									
										
										
										
											2018-02-02 18:27:03 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-13 05:43:42 +09:00
										 |  |  |   const { username, password, srv } = scope.database.settings; | 
					
						
							| 
									
										
										
										
											2018-04-24 16:38:19 +02:00
										 |  |  |   const { authenticationDatabase, ssl } = scope.database.options; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   const connectOptions = {}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-23 07:26:00 +01:00
										 |  |  |   if (username) { | 
					
						
							| 
									
										
										
										
											2018-04-24 16:38:19 +02:00
										 |  |  |     connectOptions.user = username; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-23 07:26:00 +01:00
										 |  |  |     if (password) { | 
					
						
							| 
									
										
										
										
											2018-04-24 16:38:19 +02:00
										 |  |  |       connectOptions.pass = password; | 
					
						
							| 
									
										
										
										
											2018-01-23 07:26:00 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-01-18 23:37:16 +01:00
										 |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-04-24 16:38:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-03-08 15:51:03 +01:00
										 |  |  |   if (authenticationDatabase) { | 
					
						
							|  |  |  |     connectOptions.authSource = authenticationDatabase; | 
					
						
							|  |  |  |   } | 
					
						
							| 
									
										
										
										
											2018-04-24 16:38:19 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |   connectOptions.ssl = ssl ? true : false; | 
					
						
							| 
									
										
										
										
											2018-07-08 12:40:28 -04:00
										 |  |  |   connectOptions.useNewUrlParser = true; | 
					
						
							| 
									
										
										
										
											2018-08-13 05:43:42 +09:00
										 |  |  |   connectOptions.dbName = scope.database.settings.database; | 
					
						
							| 
									
										
										
										
											2018-04-24 16:38:19 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-27 14:01:56 +02:00
										 |  |  |   Mongoose.connect(`mongodb${srv ? '+srv' : ''}://${scope.database.settings.host}${!srv ? `:${scope.database.settings.port}` : ''}/`, connectOptions, function (err) { | 
					
						
							| 
									
										
										
										
											2018-01-10 15:31:54 +01:00
										 |  |  |     if (err) { | 
					
						
							| 
									
										
										
										
											2018-12-28 16:51:02 +01:00
										 |  |  |       console.log('⚠️  Database connection has failed! Make sure your database is running.'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       if (scope.debug) { | 
					
						
							|  |  |  |         console.log('🐛 Full error log:'); | 
					
						
							|  |  |  |         console.log(err); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-10 15:31:54 +01:00
										 |  |  |       return error(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Mongoose.connection.close(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-09-12 23:06:53 -05:00
										 |  |  |     rimraf(scope.tmpPath, (err) => { | 
					
						
							|  |  |  |       if (err) { | 
					
						
							|  |  |  |         console.log(`Error removing connection test folder: ${scope.tmpPath}`); | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       success(); | 
					
						
							|  |  |  |     }); | 
					
						
							| 
									
										
										
										
											2018-01-10 15:31:54 +01:00
										 |  |  |   }); | 
					
						
							|  |  |  | }; |