Files
dbgate/plugins/dbgate-plugin-firebird/src/frontend/Dumper.js

70 lines
1.9 KiB
JavaScript

const { SqlDumper } = global.DBGATE_PACKAGES['dbgate-tools'];
class Dumper extends SqlDumper {
autoIncrement() {
this.put(' ^generated ^by ^default ^as ^identity');
}
dropColumn(column) {
this.putCmd('^alter ^table %f ^drop %i', column, column.columnName);
}
renameColumn(column, newName) {
this.putCmd('^alter ^table %f ^alter ^column %i ^to %i', column, column.columnName, newName);
}
changeColumn(oldcol, newcol, constraints) {
if (oldcol.columnName != newcol.columnName) {
this.putCmd('^alter ^table %f ^alter ^column %i ^to %i', oldcol, oldcol.columnName, newcol.columnName);
}
if (oldcol.notNull != newcol.notNull) {
if (newcol.notNull) {
this.putCmd('^alter ^table %f ^alter ^column %i ^set ^not ^null', newcol, newcol.columnName);
} else {
this.putCmd('^alter ^table %f ^alter ^column %i ^drop ^not ^null', newcol, newcol.columnName);
}
}
if (oldcol.defaultValue != newcol.defaultValue) {
if (newcol.defaultValue) {
this.putCmd(
'^alter ^table %f ^alter ^column %i ^set ^default %s',
newcol,
newcol.columnName,
newcol.defaultValue
);
} else {
this.putCmd('^alter ^table %f ^alter ^column %i ^drop ^default', newcol, newcol.columnName);
}
}
}
beginTransaction() {
this.putCmd('^set ^transaction');
}
createIndex(ix) {
const firstCol = ix.columns[0];
this.put('^create');
if (ix.isUnique) this.put(' ^unique');
this.put(
' %k ^index %i &n^on %f (&>&n',
firstCol.isDescending == true ? 'DESCENDING' : 'ASCENDING',
ix.constraintName,
ix
);
this.putCollection(',&n', ix.columns, col => {
this.put('%i', col.columnName);
});
this.put('&<&n)');
if (ix.filterDefinition && this.dialect.filteredIndexes) {
this.put('&n^where %s', ix.filterDefinition);
}
this.endCommand();
}
}
module.exports = Dumper;