Store collection prefix in mongo adapter, and clean up adapter interface (#1472)

This commit is contained in:
Drew
2016-04-13 05:21:53 -07:00
committed by Florent Vilmart
parent 512251eb58
commit 3fb3ce1ab7
6 changed files with 35 additions and 31 deletions

View File

@@ -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;

View File

@@ -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,

View File

@@ -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);
}