drop unique column works

This commit is contained in:
Jan Prochazka
2021-09-05 10:55:53 +02:00
parent 2cb3a6b446
commit 0ef5ac04d8
9 changed files with 62 additions and 10 deletions

View File

@@ -244,6 +244,8 @@ export class AlterPlan {
if (cnt.constraintType == 'primaryKey') return this.dialect.createPrimaryKey;
if (cnt.constraintType == 'foreignKey') return this.dialect.createForeignKey;
if (cnt.constraintType == 'index') return this.dialect.createIndex;
if (cnt.constraintType == 'unique') return this.dialect.createUnique;
if (cnt.constraintType == 'check') return this.dialect.createCheck;
return null;
}
@@ -251,6 +253,8 @@ export class AlterPlan {
if (cnt.constraintType == 'primaryKey') return this.dialect.dropPrimaryKey;
if (cnt.constraintType == 'foreignKey') return this.dialect.dropForeignKey;
if (cnt.constraintType == 'index') return this.dialect.dropIndex;
if (cnt.constraintType == 'unique') return this.dialect.dropUnique;
if (cnt.constraintType == 'check') return this.dialect.dropCheck;
return null;
}
@@ -364,9 +368,11 @@ export function runAlterOperation(op: AlterOperation, processor: AlterProcessor)
const newTable = _.cloneDeep(op.table);
const newDb = DatabaseAnalyser.createEmptyStructure();
newDb.tables.push(newTable);
// console.log('////////////////////////////newTable1', newTable);
op.operations.forEach(child => runAlterOperation(child, new DatabaseInfoAlterProcessor(newDb)));
// console.log('////////////////////////////op.operations', op.operations);
// console.log('////////////////////////////op.table', op.table);
// console.log('////////////////////////////newTable', newTable);
// console.log('////////////////////////////newTable2', newTable);
processor.recreateTable(op.table, newTable);
}
break;

View File

@@ -1,4 +1,14 @@
import { ColumnInfo, ConstraintInfo, DatabaseInfo, ForeignKeyInfo, PrimaryKeyInfo, TableInfo } from '../../types';
import {
ColumnInfo,
ConstraintInfo,
DatabaseInfo,
ForeignKeyInfo,
PrimaryKeyInfo,
TableInfo,
IndexInfo,
CheckInfo,
UniqueInfo,
} from '../../types';
export class DatabaseInfoAlterProcessor {
constructor(public db: DatabaseInfo) {}
@@ -35,6 +45,15 @@ export class DatabaseInfoAlterProcessor {
case 'foreignKey':
table.foreignKeys.push(constraint as ForeignKeyInfo);
break;
case 'index':
table.indexes.push(constraint as IndexInfo);
break;
case 'unique':
table.uniques.push(constraint as UniqueInfo);
break;
case 'check':
table.checks.push(constraint as CheckInfo);
break;
}
}
@@ -53,6 +72,15 @@ export class DatabaseInfoAlterProcessor {
case 'foreignKey':
table.foreignKeys = table.foreignKeys.filter(x => x.constraintName != constraint.constraintName);
break;
case 'index':
table.indexes = table.indexes.filter(x => x.constraintName != constraint.constraintName);
break;
case 'unique':
table.uniques = table.uniques.filter(x => x.constraintName != constraint.constraintName);
break;
case 'check':
table.checks = table.checks.filter(x => x.constraintName != constraint.constraintName);
break;
}
}