Skip to content

Commit 3741ac6

Browse files
committed
add index information to DataTable
1 parent b3d6bd6 commit 3741ac6

File tree

2 files changed

+25
-4
lines changed

2 files changed

+25
-4
lines changed

codegen/src/main/scala/dbcodegen/DataSchema.scala

+12-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package dbcodegen
22

3-
import schemacrawler.schema.{Column, Schema, Table}
3+
import schemacrawler.schema.{Column, Index, Schema, Table, View}
44

55
case class DataColumn(
66
name: String,
@@ -10,13 +10,22 @@ case class DataColumn(
1010
def scalaName = NameFormat.sanitizeScalaName(NameFormat.toCamelCase(name))
1111
}
1212

13+
case class DataIndex(
14+
name: String,
15+
columns: Seq[DataColumn],
16+
db: Index,
17+
) {
18+
def scalaName = NameFormat.sanitizeScalaName(NameFormat.toPascalCase(name))
19+
}
20+
1321
case class DataTable(
1422
name: String,
1523
columns: Seq[DataColumn],
16-
isView: Boolean,
24+
indices: Seq[DataIndex],
1725
db: Table,
1826
) {
19-
def scalaName = NameFormat.sanitizeScalaName(NameFormat.toPascalCase(name))
27+
def isView: Boolean = db.isInstanceOf[View]
28+
def scalaName = NameFormat.sanitizeScalaName(NameFormat.toPascalCase(name))
2029
}
2130

2231
case class DataEnumValue(

codegen/src/main/scala/dbcodegen/SchemaConverter.scala

+13-1
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,22 @@ object SchemaConverter {
3434
(dataColumn, dataEnum)
3535
}.unzip
3636

37+
val columnsMap = columns.map(c => c.name -> c).toMap
38+
39+
val indices = table.getIndexes.asScala.map { index =>
40+
val indexColumns = index.getColumns.asScala.map(column => columnsMap(column.getName))
41+
42+
DataIndex(
43+
index.getShortName.stripPrefix(table.getName + "."),
44+
indexColumns.toSeq,
45+
index,
46+
)
47+
}
48+
3749
val dataTable = DataTable(
3850
table.getName,
3951
columns.toSeq,
40-
isView = table.isInstanceOf[View],
52+
indices.toSeq,
4153
table,
4254
)
4355

0 commit comments

Comments
 (0)