support pg-promise init options (#3613)
* pg-promise init options * add database init options * Create PostgresInitOptions.spec.js * Update PostgresInitOptions.spec.js * Update PostgresInitOptions.spec.js * add PostgresInitOptions test * Add files via upload * linebreaks CRLF to LF * modify postgresURI to test environment * modify pg error code to 42P01 * fix reconfigureServer callback
This commit is contained in:
committed by
Florent Vilmart
parent
52828683ba
commit
f3f81b692b
60
spec/PostgresInitOptions.spec.js
Normal file
60
spec/PostgresInitOptions.spec.js
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
const Parse = require('parse/node').Parse;
|
||||||
|
const PostgresStorageAdapter = require('../src/Adapters/Storage/Postgres/PostgresStorageAdapter');
|
||||||
|
const postgresURI = 'postgres://localhost:5432/parse_server_postgres_adapter_test_database';
|
||||||
|
|
||||||
|
//public schema
|
||||||
|
const databaseOptions1 = {
|
||||||
|
initOptions: {
|
||||||
|
connect: function (client, dc, isFresh) {
|
||||||
|
if (isFresh) {
|
||||||
|
client.query('SET search_path = public');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
//not exists schema
|
||||||
|
const databaseOptions2 = {
|
||||||
|
initOptions: {
|
||||||
|
connect: function (client, dc, isFresh) {
|
||||||
|
if (isFresh) {
|
||||||
|
client.query('SET search_path = not_exists_schema');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const GameScore = Parse.Object.extend({
|
||||||
|
className: "GameScore"
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('Postgres database init options', () => {
|
||||||
|
it('create server with public schema databaseOptions,shoud be ok', (done) => {
|
||||||
|
reconfigureServer({
|
||||||
|
databaseAdapter: new PostgresStorageAdapter({
|
||||||
|
uri: postgresURI, collectionPrefix: 'test_',
|
||||||
|
databaseOptions: databaseOptions1
|
||||||
|
})
|
||||||
|
}).then(done, fail);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("save new GameScore in public schema", function (done) {
|
||||||
|
var score = new GameScore({ "score": 1337, "playerName": "Sean Plott", "cheatMode": false });
|
||||||
|
score.save().then(done, fail);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('create server with not exists schema databaseOptions,shoud be fail', (done) => {
|
||||||
|
reconfigureServer({
|
||||||
|
databaseAdapter: new PostgresStorageAdapter({
|
||||||
|
uri: postgresURI, collectionPrefix: 'test_',
|
||||||
|
databaseOptions: databaseOptions2
|
||||||
|
})
|
||||||
|
}).then(() => {
|
||||||
|
done();
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
expect(error.code).toEqual('42P01');
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
const pgp = require('pg-promise')();
|
|
||||||
const parser = require('./PostgresConfigParser');
|
const parser = require('./PostgresConfigParser');
|
||||||
|
|
||||||
export function createClient(uri, databaseOptions) {
|
export function createClient(uri, databaseOptions) {
|
||||||
@@ -13,11 +13,13 @@ export function createClient(uri, databaseOptions) {
|
|||||||
dbOptions[key] = databaseOptions[key];
|
dbOptions[key] = databaseOptions[key];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const initOptions = dbOptions.initOptions || {};
|
||||||
|
const pgp = require('pg-promise')(initOptions);
|
||||||
const client = pgp(dbOptions);
|
const client = pgp(dbOptions);
|
||||||
|
|
||||||
if (dbOptions.pgOptions) {
|
if (dbOptions.pgOptions) {
|
||||||
for (const key in dbOptions.pgOptions) {
|
for (const key in dbOptions.pgOptions) {
|
||||||
client.pg.defaults[key] = dbOptions.pgOptions[key];
|
pgp.pg.defaults[key] = dbOptions.pgOptions[key];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user