Store collection prefix in mongo adapter, and clean up adapter interface (#1472)
This commit is contained in:
@@ -11,14 +11,20 @@ const MongoSchemaCollectionName = '_SCHEMA';
|
||||
export class MongoStorageAdapter {
|
||||
// Private
|
||||
_uri: string;
|
||||
_options: Object;
|
||||
_collectionPrefix: string;
|
||||
_mongoOptions: Object;
|
||||
// Public
|
||||
connectionPromise;
|
||||
database;
|
||||
|
||||
constructor(uri: string, options: Object) {
|
||||
constructor({
|
||||
uri,
|
||||
collectionPrefix = '',
|
||||
mongoOptions = {},
|
||||
}) {
|
||||
this._uri = uri;
|
||||
this._options = options;
|
||||
this._collectionPrefix = collectionPrefix;
|
||||
this._mongoOptions = mongoOptions;
|
||||
}
|
||||
|
||||
connect() {
|
||||
@@ -30,7 +36,7 @@ export class MongoStorageAdapter {
|
||||
// encoded
|
||||
const encodedUri = formatUrl(parseUrl(this._uri));
|
||||
|
||||
this.connectionPromise = MongoClient.connect(encodedUri, this._options).then(database => {
|
||||
this.connectionPromise = MongoClient.connect(encodedUri, this._mongoOptions).then(database => {
|
||||
this.database = database;
|
||||
});
|
||||
return this.connectionPromise;
|
||||
|
||||
@@ -15,21 +15,16 @@
|
||||
//
|
||||
// Default is MongoStorageAdapter.
|
||||
|
||||
import DatabaseController from './Controllers/DatabaseController';
|
||||
import DatabaseController from './Controllers/DatabaseController';
|
||||
import MongoStorageAdapter from './Adapters/Storage/Mongo/MongoStorageAdapter';
|
||||
|
||||
const DefaultDatabaseURI = 'mongodb://localhost:27017/parse';
|
||||
|
||||
let adapter = MongoStorageAdapter;
|
||||
let dbConnections = {};
|
||||
let databaseURI = DefaultDatabaseURI;
|
||||
let appDatabaseURIs = {};
|
||||
let appDatabaseOptions = {};
|
||||
|
||||
function setAdapter(databaseAdapter) {
|
||||
adapter = databaseAdapter;
|
||||
}
|
||||
|
||||
function setDatabaseURI(uri) {
|
||||
databaseURI = uri;
|
||||
}
|
||||
@@ -68,7 +63,12 @@ function getDatabaseConnection(appId: string, collectionPrefix: string) {
|
||||
|
||||
var dbURI = (appDatabaseURIs[appId] ? appDatabaseURIs[appId] : databaseURI);
|
||||
|
||||
let storageAdapter = new adapter(dbURI, appDatabaseOptions[appId]);
|
||||
let storageAdapter = new MongoStorageAdapter({
|
||||
uri: dbURI,
|
||||
collectionPrefix: collectionPrefix,
|
||||
mongoOptions: appDatabaseOptions[appId]
|
||||
});
|
||||
|
||||
dbConnections[appId] = new DatabaseController(storageAdapter, {
|
||||
collectionPrefix: collectionPrefix
|
||||
});
|
||||
@@ -76,9 +76,7 @@ function getDatabaseConnection(appId: string, collectionPrefix: string) {
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
dbConnections: dbConnections,
|
||||
getDatabaseConnection: getDatabaseConnection,
|
||||
setAdapter: setAdapter,
|
||||
setDatabaseURI: setDatabaseURI,
|
||||
setAppDatabaseOptions: setAppDatabaseOptions,
|
||||
setAppDatabaseURI: setAppDatabaseURI,
|
||||
|
||||
@@ -84,7 +84,6 @@ class ParseServer {
|
||||
appId = requiredParameter('You must provide an appId!'),
|
||||
masterKey = requiredParameter('You must provide a masterKey!'),
|
||||
appName,
|
||||
databaseAdapter,
|
||||
filesAdapter,
|
||||
push,
|
||||
loggerAdapter,
|
||||
@@ -127,10 +126,6 @@ class ParseServer {
|
||||
})
|
||||
}
|
||||
|
||||
if (databaseAdapter) {
|
||||
DatabaseAdapter.setAdapter(databaseAdapter);
|
||||
}
|
||||
|
||||
if (databaseOptions) {
|
||||
DatabaseAdapter.setAppDatabaseOptions(appId, databaseOptions);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user