mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-21 09:26:00 +00:00
70 lines
1.9 KiB
JavaScript
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;
|