Skip to content

Commit 309775d

Browse files
author
Alexander Mays
committed
Decoupled providers and default adapters.
Signed-off-by: Alexander Mays <maysale01@gmail.com>
1 parent 20b7835 commit 309775d

File tree

7 files changed

+44
-38
lines changed

7 files changed

+44
-38
lines changed

spec/helper.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ var cloudMain = process.env.CLOUD_CODE_MAIN || './cloud/main.js';
1212

1313
var config = {
1414
database: {
15-
databaseURI: databaseURI,
15+
databaseURI: databaseURI || "mongodb://localhost:27017/parse",
1616
/** adapter: "../ExportAdapter" */
1717
},
1818
cache: {

src/classes/BaseProvider.js

+3-2
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,9 @@ export class BaseProvider {
5656
return adapter;
5757
}
5858

59-
setup (config = {}) {
60-
const adapter = this.resolveAdapter(config.adapter || this.DEFAULT_ADAPTER, config.options);
59+
setup (config = {}, defaultConfig = {}) {
60+
this.config = Object.assign(defaultConfig, config);
61+
const adapter = this.resolveAdapter(this.config.adapter || this.DEFAULT_ADAPTER, this.config.options);
6162
this.setAdapter(adapter);
6263
}
6364
}

src/classes/CacheProvider.js

+1-6
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@ import { default as BaseProvider } from './BaseProvider';
77
* @extends {BaseProvider}
88
* @param {Object} adapter - A cache adapter
99
*/
10-
export class CacheProvider extends BaseProvider {
11-
constructor() {
12-
super(...arguments);
13-
this.DEFAULT_ADAPTER = './MemoryCache';
14-
}
15-
}
10+
export class CacheProvider extends BaseProvider {}
1611

1712
export default new CacheProvider();

src/classes/DatabaseProvider.js

+4-11
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,13 @@
11
import { default as BaseProvider } from './BaseProvider';
22
import { default as CacheProvider } from './CacheProvider';
33

4-
const DEFAULT_URI = "mongodb://localhost:27017/parse";
5-
64
export class DatabaseProvider extends BaseProvider {
7-
constructor() {
8-
super(...arguments);
9-
this.DEFAULT_ADAPTER = '../ExportAdapter';
10-
}
11-
12-
setup(config = {}) {
13-
this.dbConnections = config.dbConnections || this.dbConnections || {};
14-
this.databaseURI = config.defaultURI || DEFAULT_URI;
15-
this.appDatabaseURIs = config.appDatabaseURIs || {};
165

6+
setup(config = {}, defaultConfig = {}) {
177
super.setup(...arguments);
8+
this.dbConnections = this.dbConnections || {};
9+
this.appDatabaseURIs = this.appDatabaseURIs || {};
10+
this.databaseURI = this.config.databaseURI || this.databaseURI;
1811
}
1912

2013
// TODO: Reimplement this whenever @Flovilmart finishes running CloudCode in subprocesses

src/classes/FilesProvider.js

+1-6
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
import { default as BaseProvider } from './BaseProvider';
22

3-
export class FilesProvider extends BaseProvider {
4-
constructor() {
5-
super(...arguments);
6-
this.DEFAULT_ADAPTER = '../GridStoreAdapter'
7-
}
8-
}
3+
export class FilesProvider extends BaseProvider {}
94

105
export default new FilesProvider();

src/files.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ var bodyParser = require('body-parser'),
88
Parse = require('parse/node').Parse,
99
rack = require('hat').rack();
1010

11-
var FilesProvider = require('./classes/FilesProvider').default;
11+
import { default as FilesProvider } from './classes/FilesProvider';
12+
1213
var router = express.Router();
1314

1415
var processCreate = function(req, res, next) {
@@ -44,12 +45,11 @@ var processCreate = function(req, res, next) {
4445
if (!hasExtension && contentType && mime.extension(contentType)) {
4546
extension = '.' + mime.extension(contentType);
4647
}
47-
4848
var filename = rack() + '_' + req.params.filename + extension;
49-
FilesAdapter.create(req.config, filename, req.body)
49+
FilesAdapter.createFileAsync(req.config, filename, req.body)
5050
.then(() => {
5151
res.status(201);
52-
var location = FilesAdapter.location(req.config, req, filename);
52+
var location = FilesAdapter.getFileLocation(req.config, req, filename);
5353
res.set('Location', location);
5454
res.json({ url: location, name: filename });
5555
}).catch((error) => {
@@ -62,7 +62,7 @@ var processCreate = function(req, res, next) {
6262
var processGet = function(req, res) {
6363
var FilesAdapter = FilesProvider.getAdapter();
6464
var config = new Config(req.params.appId);
65-
FilesAdapter.get(config, req.params.filename)
65+
FilesAdapter.getFileDataAsync(config, req.params.filename)
6666
.then((data) => {
6767
res.status(200);
6868
var contentType = mime.lookup(req.params.filename);

src/index.js

+29-7
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,14 @@ var batch = require('./batch'),
1010
PromiseRouter = require('./PromiseRouter'),
1111
httpRequest = require('./httpRequest');
1212

13-
var ParseApp = require('./classes/ParseApp').default;
14-
var CacheProvider = require('./classes/CacheProvider').default;
15-
var FilesProvider = require('./classes/FilesProvider').default;
16-
var DatabaseProvider = require('./classes/DatabaseProvider').default;
13+
import { default as ParseApp } from './classes/ParseApp';
14+
import { default as CacheProvider } from './classes/CacheProvider';
15+
import { default as FilesProvider } from './classes/FilesProvider';
16+
import { default as DatabaseProvider } from './classes/DatabaseProvider';
17+
18+
import { default as DEFAULT_CACHE_ADAPTER } from './classes/MemoryCache';
19+
import { default as DEFAULT_FILES_ADAPTER } from './GridStoreAdapter';
20+
import { default as DEFAULT_DATABASE_ADAPTER } from './ExportAdapter';
1721

1822
// Mutate the Parse object to add the Cloud Code handlers
1923
addParseCloud();
@@ -41,11 +45,29 @@ addParseCloud();
4145
// "restAPIKey": optional key from Parse dashboard
4246
// "javascriptKey": optional key from Parse dashboard
4347

48+
const SERVER_DEFAULT_CONFIG = {
49+
"cache": {
50+
adapter: DEFAULT_CACHE_ADAPTER,
51+
options: {
52+
defaultTtl: 10 * 60 * 1000 // 10 min in ms
53+
}
54+
},
55+
"files": {
56+
adapter: DEFAULT_FILES_ADAPTER,
57+
options: {}
58+
},
59+
"database": {
60+
adapter: DEFAULT_DATABASE_ADAPTER,
61+
databaseURI: "mongodb://localhost:27017/parse",
62+
options: {}
63+
}
64+
}
65+
4466
function ParseServer(args) {
4567
// Setup providers
46-
CacheProvider.setup(args.cache);
47-
FilesProvider.setup(args.files);
48-
DatabaseProvider.setup(args.database);
68+
CacheProvider.setup(args.cache, SERVER_DEFAULT_CONFIG.cache);
69+
FilesProvider.setup(args.files, SERVER_DEFAULT_CONFIG.files);
70+
DatabaseProvider.setup(args.database, SERVER_DEFAULT_CONFIG.database);
4971

5072
// Instantiate the app
5173
var app = new ParseApp(args.app);

0 commit comments

Comments
 (0)