refactoring deleteAllClasses (#4464)
* refactoring deleteAllClasses ...to re-use the connection. * Update PostgresStorageAdapter.js removing extra spaces.
This commit is contained in:
@@ -794,23 +794,25 @@ export class PostgresStorageAdapter {
|
|||||||
// Delete all data known to this adapter. Used for testing.
|
// Delete all data known to this adapter. Used for testing.
|
||||||
deleteAllClasses() {
|
deleteAllClasses() {
|
||||||
const now = new Date().getTime();
|
const now = new Date().getTime();
|
||||||
|
const helpers = this._pgp.helpers;
|
||||||
debug('deleteAllClasses');
|
debug('deleteAllClasses');
|
||||||
return this._client.any('SELECT * FROM "_SCHEMA"')
|
|
||||||
.then(results => {
|
return this._client.task('delete-all-classes', function * (t) {
|
||||||
|
try {
|
||||||
|
const results = yield t.any('SELECT * FROM "_SCHEMA"');
|
||||||
const joins = results.reduce((list, schema) => {
|
const joins = results.reduce((list, schema) => {
|
||||||
return list.concat(joinTablesForSchema(schema.schema));
|
return list.concat(joinTablesForSchema(schema.schema));
|
||||||
}, []);
|
}, []);
|
||||||
const classes = ['_SCHEMA', '_PushStatus', '_JobStatus', '_JobSchedule', '_Hooks', '_GlobalConfig', '_Audience', ...results.map(result => result.className), ...joins];
|
const classes = ['_SCHEMA', '_PushStatus', '_JobStatus', '_JobSchedule', '_Hooks', '_GlobalConfig', '_Audience', ...results.map(result => result.className), ...joins];
|
||||||
const queries = classes.map(className => ({query: 'DROP TABLE IF EXISTS $<className:name>', values: {className}}));
|
const queries = classes.map(className => ({query: 'DROP TABLE IF EXISTS $<className:name>', values: {className}}));
|
||||||
return this._client.tx(t => t.none(this._pgp.helpers.concat(queries)));
|
yield t.tx(tx => tx.none(helpers.concat(queries)));
|
||||||
}, error => {
|
} catch(error) {
|
||||||
if (error.code === PostgresRelationDoesNotExistError) {
|
if (error.code !== PostgresRelationDoesNotExistError) {
|
||||||
// No _SCHEMA collection. Don't delete anything.
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
}).then(() => {
|
// No _SCHEMA collection. Don't delete anything.
|
||||||
|
}
|
||||||
|
}).then(() => {
|
||||||
debug(`deleteAllClasses done in ${new Date().getTime() - now}`);
|
debug(`deleteAllClasses done in ${new Date().getTime() - now}`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user