69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
/** @flow weak */
|
|
// Database Adapter
|
|
//
|
|
// Allows you to change the underlying database.
|
|
//
|
|
// Adapter classes must implement the following methods:
|
|
// * a constructor with signature (connectionString, optionsObject)
|
|
// * connect()
|
|
// * loadSchema()
|
|
// * create(className, object)
|
|
// * find(className, query, options)
|
|
// * update(className, query, update, options)
|
|
// * destroy(className, query, options)
|
|
// * This list is incomplete and the database process is not fully modularized.
|
|
//
|
|
// Default is MongoStorageAdapter.
|
|
|
|
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 = {};
|
|
|
|
function setAdapter(databaseAdapter) {
|
|
adapter = databaseAdapter;
|
|
}
|
|
|
|
function setDatabaseURI(uri) {
|
|
databaseURI = uri;
|
|
}
|
|
|
|
function setAppDatabaseURI(appId, uri) {
|
|
appDatabaseURIs[appId] = uri;
|
|
}
|
|
|
|
//Used by tests
|
|
function clearDatabaseURIs() {
|
|
appDatabaseURIs = {};
|
|
dbConnections = {};
|
|
}
|
|
|
|
function getDatabaseConnection(appId: string, collectionPrefix: string) {
|
|
if (dbConnections[appId]) {
|
|
return dbConnections[appId];
|
|
}
|
|
|
|
var dbURI = (appDatabaseURIs[appId] ? appDatabaseURIs[appId] : databaseURI);
|
|
|
|
let storageAdapter = new adapter(dbURI);
|
|
dbConnections[appId] = new DatabaseController(storageAdapter, {
|
|
collectionPrefix: collectionPrefix
|
|
});
|
|
return dbConnections[appId];
|
|
}
|
|
|
|
module.exports = {
|
|
dbConnections: dbConnections,
|
|
getDatabaseConnection: getDatabaseConnection,
|
|
setAdapter: setAdapter,
|
|
setDatabaseURI: setDatabaseURI,
|
|
setAppDatabaseURI: setAppDatabaseURI,
|
|
clearDatabaseURIs: clearDatabaseURIs,
|
|
defaultDatabaseURI: databaseURI
|
|
};
|