From 6756e87908dfff5ec46c0b5eb78dc7cb69132457 Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Thu, 16 Feb 2017 15:27:46 -0500 Subject: throw exception for missing tables --- src/main/scala/NamespacedCodegen.scala | 34 +++++++++++++++++++++------------- 1 file 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) } } -- cgit v1.2.3