Added multi-app support in DatabaseAdapter.js

This commit is contained in:
Jamie Chapman
2016-02-01 19:11:02 +00:00
parent 6051e3a35c
commit 40bfc4ae95
2 changed files with 11 additions and 3 deletions

View File

@@ -20,6 +20,7 @@ var adapter = ExportAdapter;
var cache = require('./cache'); var cache = require('./cache');
var dbConnections = {}; var dbConnections = {};
var databaseURI = 'mongodb://localhost:27017/parse'; var databaseURI = 'mongodb://localhost:27017/parse';
var appDatabaseURIs = {};
function setAdapter(databaseAdapter) { function setAdapter(databaseAdapter) {
adapter = databaseAdapter; adapter = databaseAdapter;
@@ -29,11 +30,17 @@ function setDatabaseURI(uri) {
databaseURI = uri; databaseURI = uri;
} }
function setAppDatabaseURI(appId, uri) {
appDatabaseURIs[appId] = uri;
}
function getDatabaseConnection(appId) { function getDatabaseConnection(appId) {
if (dbConnections[appId]) { if (dbConnections[appId]) {
return dbConnections[appId]; return dbConnections[appId];
} }
dbConnections[appId] = new adapter(databaseURI, {
var dbURI = (appDatabaseURIs[appId] ? appDatabaseURIs[appId] : databaseURI);
dbConnections[appId] = new adapter(dbURI, {
collectionPrefix: cache.apps[appId]['collectionPrefix'] collectionPrefix: cache.apps[appId]['collectionPrefix']
}); });
dbConnections[appId].connect(); dbConnections[appId].connect();
@@ -44,5 +51,6 @@ module.exports = {
dbConnections: dbConnections, dbConnections: dbConnections,
getDatabaseConnection: getDatabaseConnection, getDatabaseConnection: getDatabaseConnection,
setAdapter: setAdapter, setAdapter: setAdapter,
setDatabaseURI: setDatabaseURI setDatabaseURI: setDatabaseURI,
setAppDatabaseURI: setAppDatabaseURI
}; };

View File

@@ -47,7 +47,7 @@ function ParseServer(args) {
FilesAdapter.setAdapter(args.filesAdapter); FilesAdapter.setAdapter(args.filesAdapter);
} }
if (args.databaseURI) { if (args.databaseURI) {
DatabaseAdapter.setDatabaseURI(args.databaseURI); DatabaseAdapter.setAppDatabaseURI(args.appId, args.databaseURI);
} }
if (args.cloud) { if (args.cloud) {
addParseCloud(); addParseCloud();