From abda4fd7dfc7c590ff7fc9b344cd5c4f503abb34 Mon Sep 17 00:00:00 2001 From: npedot <nicola.pedot@gmail.com> Date: Fri, 11 Dec 2020 11:33:59 +0100 Subject: [PATCH] adds drop constraints via changeset by table name --- .../unibz.cs.semint.kprime/domain/ddl/Schema.kt | 12 +++++++++++- .../domain/dml/DropConstraint.kt | 6 +++--- .../usecase/common/ApplyChangeSetUseCase.kt | 11 ++++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt index b6563cf..2778d20 100644 --- a/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt +++ b/src/main/kotlin/unibz.cs.semint.kprime/domain/ddl/Schema.kt @@ -41,7 +41,17 @@ class Schema () { fun constraint(name: String): Constraint? { if (constraints().isEmpty()) return null - return constraints().filter { c -> c.name==name}.firstOrNull() + return constraints().filter { c -> c.name==name }.firstOrNull() + } + + fun constraintById(id: String): Constraint? { + if (constraints().isEmpty()) return null + return constraints().filter { c -> c.id==id }.firstOrNull() + } + + fun constraintByTable(name: String): Constraint? { + if (constraints().isEmpty()) return null + return constraints().filter { c -> c.source.table==name || c.target.table==name }.firstOrNull() } fun keys(tableName: String): List<Constraint> { diff --git a/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt b/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt index 9878908..f8be907 100644 --- a/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt +++ b/src/main/kotlin/unibz.cs.semint.kprime/domain/dml/DropConstraint.kt @@ -23,15 +23,15 @@ class DropConstraint() { this.schemaName = schemaName } - infix fun name(constraintName: String) = apply { + infix fun name(constraintName: String) = apply { this.constraintName = constraintName } - infix fun type(type:String) { + infix fun type(type:String) = apply { this.type = type } - infix fun table(table:String) { + infix fun table(table:String) = apply { this.tableName = table } } \ No newline at end of file diff --git a/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt b/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt index 8c3b4ec..a13982a 100644 --- a/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt +++ b/src/main/kotlin/unibz.cs.semint.kprime/usecase/common/ApplyChangeSetUseCase.kt @@ -113,14 +113,19 @@ class ApplyChangeSetUseCase(val serializer: SerializerServiceI) { fun dropConstraint(db:Database, dropConstraint: DropConstraint):Database { if (db.schema.constraints().isEmpty()) return db - val c = db.schema.constraint(dropConstraint.constraintName) - .let { it -> if(it !=null) db.schema.constraints().remove(it)} + if (dropConstraint.tableName.isNotEmpty()) { + db.schema.constraintByTable(dropConstraint.tableName) + .let { it -> if (it != null) db.schema.constraints().remove(it) } + } else { + db.schema.constraint(dropConstraint.constraintName) + .let { it -> if (it != null) db.schema.constraints().remove(it) } + } return db } fun dropMapping(db:Database, dropMapping: DropMapping):Database { if (db.mappings == null || db.mappings!!.isEmpty()) return db - val c = db.mapping(dropMapping.name) + db.mapping(dropMapping.name) .let { it -> if(it !=null) db.mappings!!.remove(it)} return db } -- GitLab