This commit is contained in:
Jan Prochazka
2021-01-23 07:24:46 +01:00
parent 451af5d09f
commit b9cb8c3a45
22 changed files with 127 additions and 129 deletions

View File

@@ -3,7 +3,7 @@ import _sortBy from 'lodash/sortBy';
import _groupBy from 'lodash/groupBy';
import _pick from 'lodash/pick';
const fp_pick = (arg) => (array) => _pick(array, arg);
const fp_pick = arg => array => _pick(array, arg);
export class DatabaseAnalyser {
structure: DatabaseInfo;
modifications: DatabaseModification[];
@@ -51,14 +51,14 @@ export class DatabaseAnalyser {
const res = {};
for (const field of ['tables', 'views', 'functions', 'procedures', 'triggers']) {
const removedIds = this.modifications
.filter((x) => x.action == 'remove' && x.objectTypeField == field)
.map((x) => extractObjectId(x));
.filter(x => x.action == 'remove' && x.objectTypeField == field)
.map(x => extractObjectId(x));
const newArray = newlyAnalysed[field] || [];
const addedChangedIds = newArray.map((x) => extractObjectId(x));
const addedChangedIds = newArray.map(x => extractObjectId(x));
const removeAllIds = [...removedIds, ...addedChangedIds];
res[field] = _sortBy(
[...this.structure[field].filter((x) => !removeAllIds.includes(extractObjectId(x))), ...newArray],
(x) => x.pureName
[...this.structure[field].filter(x => !removeAllIds.includes(extractObjectId(x))), ...newArray],
x => x.pureName
);
}
@@ -87,7 +87,7 @@ export class DatabaseAnalyser {
}
static byTableFilter(table) {
return (x) => x.pureName == table.pureName && x.schemaName == x.schemaName;
return x => x.pureName == table.pureName && x.schemaName == x.schemaName;
}
static extractPrimaryKeys(table, pkColumns) {
@@ -101,7 +101,7 @@ export class DatabaseAnalyser {
}
static extractForeignKeys(table, fkColumns) {
const grouped = _groupBy(fkColumns.filter(DatabaseAnalyser.byTableFilter(table)), 'constraintName');
return Object.keys(grouped).map((constraintName) => ({
return Object.keys(grouped).map(constraintName => ({
constraintName,
constraintType: 'foreignKey',
..._pick(grouped[constraintName][0], [

View File

@@ -7,9 +7,9 @@ import {
TableInfo,
TransformType,
} from 'dbgate-types';
import _isString from 'lodash/isString'
import _isNumber from 'lodash/isNumber'
import _isDate from 'lodash/isDate'
import _isString from 'lodash/isString';
import _isNumber from 'lodash/isNumber';
import _isDate from 'lodash/isDate';
export class SqlDumper {
s = '';
@@ -95,7 +95,7 @@ export class SqlDumper {
}
putFormattedList(c, collection) {
if (!collection) return;
this.putCollection(', ', collection, (item) => this.putFormattedValue(c, item));
this.putCollection(', ', collection, item => this.putFormattedValue(c, item));
}
put(format: string, ...args) {
let i = 0;
@@ -203,7 +203,7 @@ export class SqlDumper {
createTable(table: TableInfo) {
this.put('^create ^table %f ( &>&n', table);
this.putCollection(',&n', table.columns, (col) => {
this.putCollection(',&n', table.columns, col => {
this.put('%i ', col.columnName);
this.columnDefinition(col);
});
@@ -214,11 +214,11 @@ export class SqlDumper {
}
this.put(
' ^primary ^key (%,i)',
table.primaryKey.columns.map((x) => x.columnName)
table.primaryKey.columns.map(x => x.columnName)
);
}
if (table.foreignKeys) {
table.foreignKeys.forEach((fk) => {
table.foreignKeys.forEach(fk => {
this.put(',&n');
this.createForeignKeyFore(fk);
});
@@ -247,9 +247,9 @@ export class SqlDumper {
if (fk.constraintName != null) this.put('^constraint %i ', fk.constraintName);
this.put(
'^foreign ^key (%,i) ^references %f (%,i)',
fk.columns.map((x) => x.columnName),
fk.columns.map(x => x.columnName),
{ schemaName: fk.refSchemaName, pureName: fk.refTableName },
fk.columns.map((x) => x.refColumnName)
fk.columns.map(x => x.refColumnName)
);
if (fk.deleteAction) this.put(' ^on ^delete %k', fk.deleteAction);
if (fk.updateAction) this.put(' ^on ^update %k', fk.updateAction);

View File

@@ -15,7 +15,7 @@ export function createBulkInsertStreamBase(driver, stream, pool, name, options):
writable.structure = null;
writable.columnNames = null;
writable.addRow = async (row) => {
writable.addRow = async row => {
if (writable.structure) {
writable.buffer.push(row);
} else {
@@ -44,8 +44,8 @@ export function createBulkInsertStreamBase(driver, stream, pool, name, options):
}
writable.columnNames = _intersection(
structure.columns.map((x) => x.columnName),
writable.structure.columns.map((x) => x.columnName)
structure.columns.map(x => x.columnName),
writable.structure.columns.map(x => x.columnName)
);
};
@@ -56,14 +56,14 @@ export function createBulkInsertStreamBase(driver, stream, pool, name, options):
const dmp = driver.createDumper();
dmp.putRaw(`INSERT INTO ${fullNameQuoted} (`);
dmp.putCollection(',', writable.columnNames, (col) => dmp.putRaw(driver.dialect.quoteIdentifier(col)));
dmp.putCollection(',', writable.columnNames, col => dmp.putRaw(driver.dialect.quoteIdentifier(col)));
dmp.putRaw(')\n VALUES\n');
let wasRow = false;
for (const row of rows) {
if (wasRow) dmp.putRaw(',\n');
dmp.putRaw('(');
dmp.putCollection(',', writable.columnNames, (col) => dmp.putValue(row[col]));
dmp.putCollection(',', writable.columnNames, col => dmp.putValue(row[col]));
dmp.putRaw(')');
wasRow = true;
}
@@ -84,7 +84,7 @@ export function createBulkInsertStreamBase(driver, stream, pool, name, options):
callback();
};
writable._final = async (callback) => {
writable._final = async callback => {
await writable.send();
callback();
};

View File

@@ -1,4 +1,4 @@
import { SqlDumper } from "./SqlDumper";
import { SqlDumper } from './SqlDumper';
const dialect = {
limitSelect: true,

View File

@@ -39,13 +39,13 @@ export function findObjectLike(
if (schemaName) {
// @ts-ignore
return dbinfo[objectTypeField].find(
(x) => equalStringLike(x.pureName, pureName) && equalStringLike(x.schemaName, schemaName)
x => equalStringLike(x.pureName, pureName) && equalStringLike(x.schemaName, schemaName)
);
}
// @ts-ignore
return dbinfo[objectTypeField].find((x) => equalStringLike(x.pureName, pureName));
return dbinfo[objectTypeField].find(x => equalStringLike(x.pureName, pureName));
}
export function findForeignKeyForColumn(table: TableInfo, column: ColumnInfo) {
return (table.foreignKeys || []).find((fk) => fk.columns.find((col) => col.columnName == column.columnName));
return (table.foreignKeys || []).find(fk => fk.columns.find(col => col.columnName == column.columnName));
}

View File

@@ -37,12 +37,12 @@ export function extractShellApiFunctionName(functionName) {
export function findEngineDriver(connection, extensions: ExtensionsDirectory): EngineDriver {
if (_isString(connection)) {
return extensions.drivers.find((x) => x.engine == connection);
return extensions.drivers.find(x => x.engine == connection);
}
if (_isPlainObject(connection)) {
const { engine } = connection;
if (engine) {
return extensions.drivers.find((x) => x.engine == engine);
return extensions.drivers.find(x => x.engine == engine);
}
}
return null;

View File

@@ -288,5 +288,5 @@ export function splitPostgresQuery(sql: string, options?: SplitOptions): string[
}
} while (context.unread !== '');
publishStatement(context);
return context.output.map((v) => v.value);
return context.output.map(v => v.value);
}

View File

@@ -4,7 +4,7 @@ import _isString from 'lodash/isString';
export function compilePermissions(permissions: string[] | string) {
if (!permissions) return null;
if (_isString(permissions)) permissions = permissions.split(',');
return permissions.map((x) => new RegExp('^' + _escapeRegExp(x).replace(/\\\*/g, '.*') + '$'));
return permissions.map(x => new RegExp('^' + _escapeRegExp(x).replace(/\\\*/g, '.*') + '$'));
}
export function testPermission(tested: string, permissions: RegExp[]) {