From dbf2afc5eac414466ee01755a4c0e318b4bae8b9 Mon Sep 17 00:00:00 2001 From: steven-supersolid Date: Thu, 10 Mar 2016 16:49:45 +0000 Subject: [PATCH] Add database options to ParseServer constructor and pass to MongoStorageAdapter --- src/Adapters/Storage/Mongo/MongoStorageAdapter.js | 6 ++++-- src/DatabaseAdapter.js | 8 +++++++- src/index.js | 5 +++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/Adapters/Storage/Mongo/MongoStorageAdapter.js b/src/Adapters/Storage/Mongo/MongoStorageAdapter.js index e3d59493..d3d2bc7e 100644 --- a/src/Adapters/Storage/Mongo/MongoStorageAdapter.js +++ b/src/Adapters/Storage/Mongo/MongoStorageAdapter.js @@ -10,12 +10,14 @@ const MongoSchemaCollectionName = '_SCHEMA'; export class MongoStorageAdapter { // Private _uri: string; + _options: Object; // Public connectionPromise; database; - constructor(uri: string) { + constructor(uri: string, options: Object) { this._uri = uri; + this._options = options; } connect() { @@ -23,7 +25,7 @@ export class MongoStorageAdapter { return this.connectionPromise; } - this.connectionPromise = MongoClient.connect(this._uri).then(database => { + this.connectionPromise = MongoClient.connect(this._uri, this._options).then(database => { this.database = database; }); return this.connectionPromise; diff --git a/src/DatabaseAdapter.js b/src/DatabaseAdapter.js index 6663f36b..dbc7c6ac 100644 --- a/src/DatabaseAdapter.js +++ b/src/DatabaseAdapter.js @@ -24,6 +24,7 @@ let adapter = MongoStorageAdapter; let dbConnections = {}; let databaseURI = DefaultDatabaseURI; let appDatabaseURIs = {}; +let appDatabaseOptions = {}; function setAdapter(databaseAdapter) { adapter = databaseAdapter; @@ -37,6 +38,10 @@ function setAppDatabaseURI(appId, uri) { appDatabaseURIs[appId] = uri; } +function setAppDatabaseOptions(appId: string, options: Object) { + appDatabaseOptions[appId] = options; +} + //Used by tests function clearDatabaseURIs() { appDatabaseURIs = {}; @@ -50,7 +55,7 @@ function getDatabaseConnection(appId: string, collectionPrefix: string) { var dbURI = (appDatabaseURIs[appId] ? appDatabaseURIs[appId] : databaseURI); - let storageAdapter = new adapter(dbURI); + let storageAdapter = new adapter(dbURI, appDatabaseOptions[appId]); dbConnections[appId] = new DatabaseController(storageAdapter, { collectionPrefix: collectionPrefix }); @@ -62,6 +67,7 @@ module.exports = { getDatabaseConnection: getDatabaseConnection, setAdapter: setAdapter, setDatabaseURI: setDatabaseURI, + setAppDatabaseOptions: setAppDatabaseOptions, setAppDatabaseURI: setAppDatabaseURI, clearDatabaseURIs: clearDatabaseURIs, defaultDatabaseURI: databaseURI diff --git a/src/index.js b/src/index.js index 131f1f69..2e4d553f 100644 --- a/src/index.js +++ b/src/index.js @@ -84,6 +84,7 @@ function ParseServer({ push, loggerAdapter, databaseURI = DatabaseAdapter.defaultDatabaseURI, + databaseOptions, cloud, collectionPrefix = '', clientKey, @@ -120,6 +121,10 @@ function ParseServer({ DatabaseAdapter.setAppDatabaseURI(appId, databaseURI); } + if (databaseOptions) { + DatabaseAdapter.setAppDatabaseOptions(appId, databaseOptions); + } + if (cloud) { addParseCloud(); if (typeof cloud === 'function') {