1- package de.quati.pgen.plugin.intern.util. codegen
1+ package de.quati.pgen.plugin.intern.codegen
22
33import com.squareup.kotlinpoet.CodeBlock
44import com.squareup.kotlinpoet.ParameterizedTypeName.Companion.parameterizedBy
55import com.squareup.kotlinpoet.asTypeName
66import com.squareup.kotlinpoet.buildCodeBlock
77import de.quati.pgen.plugin.intern.model.config.Config
8- import de.quati.pgen.plugin.intern.model.sql.Column
9- import de.quati.pgen.plugin.intern.util.codegen.oas.DbContext
8+ import de.quati.pgen.plugin.intern.model.spec.Column
109
1110
1211context(c: CodeGenContext )
1312internal fun Column.getDefaultExpression (): CodeBlock ? = when (type) {
14- Column .Type .Primitive .TIMESTAMP -> when (default ) {
13+ Column .Type .Primitive .TIMESTAMP -> when (defaultExpr ) {
1514 " now()" -> CodeBlock .of(" .defaultExpression(%T)" , Poet .Exposed .defaultExpTimestamp)
1615 else -> null
1716 }
1817
19- Column .Type .Primitive .TIMESTAMP_WITH_TIMEZONE -> when (default ) {
18+ Column .Type .Primitive .TIMESTAMP_WITH_TIMEZONE -> when (defaultExpr ) {
2019 " now()" -> CodeBlock .of(" .defaultExpression(%T)" , Poet .Exposed .defaultExpTimestampZ)
2120 else -> null
2221 }
2322
24- Column .Type .Primitive .UUID -> when (default ) {
23+ Column .Type .Primitive .UUID -> when (defaultExpr ) {
2524 " gen_random_uuid()" -> CodeBlock .of(
2625 " .defaultExpression(%T(%S, %T()))" ,
2726 Poet .Exposed .customFunction, " gen_random_uuid" , c.poet.uuidColumnType,
@@ -30,7 +29,7 @@ internal fun Column.getDefaultExpression(): CodeBlock? = when (type) {
3029 else -> null
3130 }
3231
33- Column .Type .Primitive .BOOL -> when (default ) {
32+ Column .Type .Primitive .BOOL -> when (defaultExpr ) {
3433 " false" -> CodeBlock .of(" .default(false)" )
3534 " true" -> CodeBlock .of(" .default(true)" )
3635 else -> null
@@ -39,7 +38,7 @@ internal fun Column.getDefaultExpression(): CodeBlock? = when (type) {
3938 Column .Type .Primitive .INT4 , Column .Type .Primitive .INT8 -> {
4039 val prefix = " nextval('"
4140 val suffix = " '::regclass)"
42- default
41+ defaultExpr
4342 ?.takeIf { it.startsWith(prefix) && it.endsWith(suffix) }
4443 ?.removePrefix(prefix)?.removeSuffix(suffix)
4544 ?.let { seqName ->
@@ -50,18 +49,18 @@ internal fun Column.getDefaultExpression(): CodeBlock? = when (type) {
5049 else -> null
5150}
5251
53- context(c: CodeGenContext , _ : DbContext )
52+ context(c: CodeGenContext )
5453internal fun initializerBlock (column : Column ): CodeBlock {
5554 val columnName = column.name.value
5655 return when (val type = c.resolve(column.type)) {
5756 is Column .Type .NonPrimitive .Array -> {
5857 fun default () = CodeBlock .of(" array<%T>(name = %S)" , type.getTypeName(), columnName)
5958
60- when (val elementType = c.resolve(type.elementType )) {
59+ when (val elementType = c.resolve(type.element )) {
6160 is Column .Type .NonPrimitive .Enum -> buildCodeBlock {
6261 add(" %T<%T>(\n " , Poet .Pgen .pgenEnumArray, type.getTypeName())
6362 add(" name = %S,\n " , columnName)
64- add(" sql = %S,\n " , " ${elementType.name.schema.schemaName} . ${elementType.name.name }" )
63+ add(" sql = %S,\n " , " ${elementType.ref } " )
6564 add(" )" )
6665 }
6766
@@ -79,17 +78,17 @@ internal fun initializerBlock(column: Column): CodeBlock {
7978 type.getTypeName(), columnName, elementType.getColumnTypeTypeName()
8079 )
8180
82- is Column .Type .NonPrimitive . DomainType -> when (c.connectionType) {
81+ is Column .Type .DomainType -> when (c.connectionType) {
8382 Config .ConnectionType .JDBC -> buildCodeBlock {
8483 add(" array(\n " )
8584 add(" name = %S,\n " , columnName)
8685 add(" columnType = %T.create(\n " , Poet .Pgen .domainColumnType)
8786 add(" sqlType = %S,\n " , elementType.sqlType)
88- add(" originType = " ); add(elementType.originalType .getExposedColumnType()); add(" ,\n " )
87+ add(" originType = " ); add(elementType.base .getExposedColumnType()); add(" ,\n " )
8988 add(
9089 " builder = { %T${elementType.parserFunction} (it as %T) },\n " ,
9190 elementType.getDomainTypename(),
92- elementType.originalType .getTypeName(),
91+ elementType.base .getTypeName(),
9392 )
9493 add(" ),\n " , Poet .Pgen .domainTypeColumn)
9594 add(" )" )
@@ -99,11 +98,11 @@ internal fun initializerBlock(column: Column): CodeBlock {
9998 add(" %T(\n " , Poet .Pgen .pgenDomainArray)
10099 add(" name = %S,\n " , columnName)
101100 add(" sqlType = %S,\n " , elementType.sqlType)
102- add(" originType = " ); add(elementType.originalType .getExposedColumnType()); add(" ,\n " )
101+ add(" originType = " ); add(elementType.base .getExposedColumnType()); add(" ,\n " )
103102 add(
104103 " builder = { %T${elementType.parserFunction} (it as %T) },\n " ,
105104 elementType.getDomainTypename(),
106- elementType.originalType .getTypeName(),
105+ elementType.base .getTypeName(),
107106 )
108107 add(" )" )
109108 }
@@ -116,7 +115,7 @@ internal fun initializerBlock(column: Column): CodeBlock {
116115 is Column .Type .NonPrimitive .Enum -> buildCodeBlock {
117116 add(" %T<%T>(\n " , Poet .Pgen .pgenEnum, type.getTypeName())
118117 add(" name = %S,\n " , columnName)
119- add(" sql = %S,\n " , " ${type.name.schema.schemaName} . ${type.name.name }" )
118+ add(" sql = %S,\n " , " ${type.ref } " )
120119 add(" )" )
121120 }
122121
@@ -125,15 +124,15 @@ internal fun initializerBlock(column: Column): CodeBlock {
125124 columnName, type.getColumnTypeTypeName(),
126125 )
127126
128- is Column .Type .NonPrimitive . DomainType -> buildCodeBlock {
129- add(" %T<%T, %T>(\n " , Poet .Pgen .domainType, type.getDomainTypename(), type.originalType .getTypeName())
127+ is Column .Type .DomainType -> buildCodeBlock {
128+ add(" %T<%T, %T>(\n " , Poet .Pgen .domainType, type.getDomainTypename(), type.base .getTypeName())
130129 add(" name = %S,\n " , columnName)
131130 add(" sqlType = %S,\n " , type.sqlType)
132- add(" originType = " ); add(type.originalType .getExposedColumnType()); add(" ,\n " )
131+ add(" originType = " ); add(type.base .getExposedColumnType()); add(" ,\n " )
133132 add(
134133 " builder = { %T${type.parserFunction} (it as %T) }\n " ,
135134 type.getDomainTypename(),
136- type.originalType .getTypeName(),
135+ type.base .getTypeName(),
137136 )
138137 add(" )" )
139138 }
@@ -208,10 +207,10 @@ internal fun initializerBlock(column: Column): CodeBlock {
208207 }
209208}
210209
211- context(_: CodeGenContext , _ : DbContext )
210+ context(_: CodeGenContext )
212211internal fun Column.getColumnTypeName () = when (type) {
213212 is Column .Type .NonPrimitive .Array -> List ::class .asTypeName()
214213 .parameterizedBy(type.getTypeName())
215214
216215 else -> type.getTypeName()
217- }.copy(nullable = isNullable )
216+ }.copy(nullable = nullable )
0 commit comments