@@ -7,6 +7,7 @@ var batch = require('./batch'),
7
7
multer = require ( 'multer' ) ,
8
8
Parse = require ( 'parse/node' ) . Parse ,
9
9
path = require ( 'path' ) ,
10
+ url = require ( 'url' ) ,
10
11
authDataManager = require ( './authDataManager' ) ;
11
12
12
13
import defaults from './defaults' ;
@@ -54,6 +55,7 @@ import DatabaseController from './Controllers/DatabaseController';
54
55
import SchemaCache from './Controllers/SchemaCache' ;
55
56
import ParsePushAdapter from 'parse-server-push-adapter' ;
56
57
import MongoStorageAdapter from './Adapters/Storage/Mongo/MongoStorageAdapter' ;
58
+ import PostgresStorageAdapter from './Adapters/Storage/Postgres/PostgresStorageAdapter' ;
57
59
58
60
import { ParseServerRESTController } from './ParseServerRESTController' ;
59
61
// Mutate the Parse object to add the Cloud Code handlers
@@ -145,11 +147,7 @@ class ParseServer {
145
147
if ( ( databaseOptions || ( databaseURI && databaseURI != defaults . DefaultMongoURI ) || collectionPrefix !== '' ) && databaseAdapter ) {
146
148
throw 'You cannot specify both a databaseAdapter and a databaseURI/databaseOptions/collectionPrefix.' ;
147
149
} else if ( ! databaseAdapter ) {
148
- databaseAdapter = new MongoStorageAdapter ( {
149
- uri : databaseURI ,
150
- collectionPrefix,
151
- mongoOptions : databaseOptions ,
152
- } ) ;
150
+ databaseAdapter = this . getDatabaseAdapter ( databaseURI , collectionPrefix , databaseOptions )
153
151
} else {
154
152
databaseAdapter = loadAdapter ( databaseAdapter )
155
153
}
@@ -252,6 +250,27 @@ class ParseServer {
252
250
}
253
251
}
254
252
253
+ getDatabaseAdapter ( databaseURI , collectionPrefix , databaseOptions ) {
254
+ let protocol ;
255
+ try {
256
+ const parsedURI = url . parse ( databaseURI ) ;
257
+ protocol = parsedURI . protocol ? parsedURI . protocol . toLowerCase ( ) : null ;
258
+ } catch ( e ) { }
259
+ switch ( protocol ) {
260
+ case 'postgres:' :
261
+ return new PostgresStorageAdapter ( {
262
+ uri : databaseURI ,
263
+ collectionPrefix
264
+ } ) ;
265
+ default :
266
+ return new MongoStorageAdapter ( {
267
+ uri : databaseURI ,
268
+ collectionPrefix,
269
+ mongoOptions : databaseOptions ,
270
+ } ) ;
271
+ }
272
+ }
273
+
255
274
get app ( ) {
256
275
return ParseServer . app ( this . config ) ;
257
276
}
0 commit comments