@@ -58,9 +58,9 @@ case class Codegen(options: CodegenOptions, namingStrategy: NamingStrategy) {
58
58
}
59
59
}
60
60
61
- def getForeignKeys (db : Connection ): Set [ForeignKey ] = {
61
+ def getForeignKeys (db : Connection , tableName : String ): Set [ForeignKey ] = {
62
62
val foreignKeys =
63
- db.getMetaData.getExportedKeys(null , options.schema, null )
63
+ db.getMetaData.getExportedKeys(null , options.schema, tableName )
64
64
results(foreignKeys).map { row =>
65
65
ForeignKey (
66
66
from = SimpleColumn (
@@ -79,12 +79,25 @@ case class Codegen(options: CodegenOptions, namingStrategy: NamingStrategy) {
79
79
System .err.println(s " [ ${Console .YELLOW }warn ${Console .RESET }] $msg" )
80
80
}
81
81
82
- def getTables (db : Connection , foreignKeys : Set [ ForeignKey ] ): Seq [Table ] = {
82
+ def getTables (db : Connection ): Seq [Table ] = {
83
83
val rs : ResultSet =
84
84
db.getMetaData.getTables(null , options.schema, " %" , Array (" TABLE" ))
85
85
results(rs).flatMap { row =>
86
86
val name = row.getString(TABLE_NAME )
87
87
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
+
88
101
val columns = getColumns(db, name, foreignKeys)
89
102
val mappedColumns = columns.filter(_.isRight).map(_.right.get)
90
103
val unmappedColumns = columns.filter(_.isLeft).map(_.left.get)
@@ -110,7 +123,7 @@ case class Codegen(options: CodegenOptions, namingStrategy: NamingStrategy) {
110
123
val simpleColumn = SimpleColumn (tableName, colName)
111
124
val ref = foreignKeys.find(_.from == simpleColumn).map(_.to)
112
125
113
- val typ = cols.getString(TYPE_NAME )
126
+ val typ = cols.getString(TYPE_NAME ).toLowerCase
114
127
columnType2scalaType.get(typ).map { scalaType =>
115
128
Right (Column (
116
129
tableName,
@@ -259,18 +272,7 @@ object Codegen extends AppOf[CodegenOptions] {
259
272
codegenOptions.user,
260
273
codegenOptions.password)
261
274
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)
274
276
val generatedCode =
275
277
codegen.tables2code(tables, SnakeCaseReverse , codegenOptions)
276
278
val codeStyle = ScalafmtStyle .defaultWithAlign.copy(maxColumn = 120 )
0 commit comments