aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/scala/NamespacedCodegen.scala34
1 files changed, 21 insertions, 13 deletions
diff --git a/src/main/scala/NamespacedCodegen.scala b/src/main/scala/NamespacedCodegen.scala
index 21876ea..db6e805 100644
--- a/src/main/scala/NamespacedCodegen.scala
+++ b/src/main/scala/NamespacedCodegen.scala
@@ -252,18 +252,26 @@ object SchemaParser {
def createModel(
jdbcProfile: JdbcProfile,
mappedSchemasOpt: Option[Map[String, List[String]]]): DBIO[Model] = {
- val allTables: DBIO[Vector[MTable]] = MTable.getTables
-
- val filteredTables = mappedSchemasOpt.map(
- mappedSchemas =>
- allTables.map(
- (tables: Vector[MTable]) =>
- tables.filter(
- table =>
- table.name.schema
- .flatMap(mappedSchemas.get)
- .exists(ts => ts.isEmpty || ts.contains(table.name.name)))))
-
- jdbcProfile.createModel(filteredTables orElse Some(allTables))
+ import slick.jdbc.meta.MQName
+
+ val filteredTables = mappedSchemasOpt.map { mappedSchemas =>
+ MTable.getTables.map { (tables: Vector[MTable]) =>
+ mappedSchemas.flatMap {
+ case (schemaName, tableNames) =>
+ tableNames.map(
+ tableName =>
+ tables
+ .find(table =>
+ table.name match {
+ case MQName(_, Some(`schemaName`), `tableName`) => true
+ case _ => false
+ })
+ .getOrElse(throw new IllegalArgumentException(
+ s"$schemaName.$tableName does not exist in the connected database.")))
+ }.toList
+ }
+ }
+
+ jdbcProfile.createModel(filteredTables)
}
}