@@ -58,9 +58,9 @@ case class Codegen(options: CodegenOptions, namingStrategy: NamingStrategy) {
5858 }
5959 }
6060
61- def getForeignKeys (db : Connection ): Set [ForeignKey ] = {
61+ def getForeignKeys (db : Connection , tableName : String ): Set [ForeignKey ] = {
6262 val foreignKeys =
63- db.getMetaData.getExportedKeys(null , options.schema, null )
63+ db.getMetaData.getExportedKeys(null , options.schema, tableName )
6464 results(foreignKeys).map { row =>
6565 ForeignKey (
6666 from = SimpleColumn (
@@ -79,12 +79,25 @@ case class Codegen(options: CodegenOptions, namingStrategy: NamingStrategy) {
7979 System .err.println(s " [ ${Console .YELLOW }warn ${Console .RESET }] $msg" )
8080 }
8181
82- def getTables (db : Connection , foreignKeys : Set [ ForeignKey ] ): Seq [Table ] = {
82+ def getTables (db : Connection ): Seq [Table ] = {
8383 val rs : ResultSet =
8484 db.getMetaData.getTables(null , options.schema, " %" , Array (" TABLE" ))
8585 results(rs).flatMap { row =>
8686 val name = row.getString(TABLE_NAME )
8787 if (! excludedTables.contains(name)) {
88+
89+ val plainForeignKeys = getForeignKeys(db, name)
90+
91+ val foreignKeys = plainForeignKeys.map { fk =>
92+
93+ def resolve (col : SimpleColumn ): SimpleColumn = {
94+ plainForeignKeys.find(f => f.from == col).map(_.to).getOrElse(col)
95+ }
96+
97+ ForeignKey (fk.from, resolve(fk.to))
98+ }
99+
100+
88101 val columns = getColumns(db, name, foreignKeys)
89102 val mappedColumns = columns.filter(_.isRight).map(_.right.get)
90103 val unmappedColumns = columns.filter(_.isLeft).map(_.left.get)
@@ -110,7 +123,7 @@ case class Codegen(options: CodegenOptions, namingStrategy: NamingStrategy) {
110123 val simpleColumn = SimpleColumn (tableName, colName)
111124 val ref = foreignKeys.find(_.from == simpleColumn).map(_.to)
112125
113- val typ = cols.getString(TYPE_NAME )
126+ val typ = cols.getString(TYPE_NAME ).toLowerCase
114127 columnType2scalaType.get(typ).map { scalaType =>
115128 Right (Column (
116129 tableName,
@@ -259,18 +272,7 @@ object Codegen extends AppOf[CodegenOptions] {
259272 codegenOptions.user,
260273 codegenOptions.password)
261274 val codegen = Codegen (codegenOptions, SnakeCaseReverse )
262- val plainForeignKeys = codegen.getForeignKeys(db)
263-
264- val foreignKeys = plainForeignKeys.map { fk =>
265-
266- def resolve (col : codegen.SimpleColumn ): codegen.SimpleColumn = {
267- plainForeignKeys.find(f => f.from == col).map(_.to).getOrElse(col)
268- }
269-
270- codegen.ForeignKey (fk.from, resolve(fk.to))
271- }
272-
273- val tables = codegen.getTables(db, foreignKeys)
275+ val tables = codegen.getTables(db)
274276 val generatedCode =
275277 codegen.tables2code(tables, SnakeCaseReverse , codegenOptions)
276278 val codeStyle = ScalafmtStyle .defaultWithAlign.copy(maxColumn = 120 )
0 commit comments