@@ -38,70 +38,83 @@ fun Table.Column.Type.getTypeName(): TypeName {
38
38
}
39
39
40
40
context(CodeGenContext )
41
- fun PropertySpec.Builder.initializer (column : Table .Column ) {
41
+ fun PropertySpec.Builder.initializer (column : Table .Column , postFix : String , vararg postArgs : Any ) {
42
42
val columnName = column.name.value
43
43
when (val type = column.type) {
44
- is Table .Column .Type .Array -> initializer(" array<%T>(name = %S)" , type.getTypeName(), columnName)
44
+ is Table .Column .Type .Array -> initializer(
45
+ " array<%T>(name = %S)$postFix " ,
46
+ type.getTypeName(), columnName, * postArgs
47
+ )
48
+
45
49
is Table .Column .Type .Enum -> initializer(
46
50
"""
47
51
customEnumeration(
48
52
name = %S,
49
53
sql = %S,
50
- fromDb = { %T(it as String) },
54
+ fromDb = { %T<%T> (it as String) },
51
55
toDb = { it.toPgObject() },
52
- )""" .trimIndent(), columnName, type.name.name, typeNameGetPgEnumByLabel
56
+ )$postFix """ .trimIndent(),
57
+ columnName,
58
+ type.name.name,
59
+ typeNameGetPgEnumByLabel,
60
+ type.name.typeName,
61
+ * postArgs
53
62
)
54
63
55
- Table .Column .Type .Int8 -> initializer(" long(name = %S)" , columnName)
56
- Table .Column .Type .Bool -> initializer(" bool(name = %S)" , columnName)
57
- Table .Column .Type .VarChar -> initializer(" text(name = %S)" , columnName)
58
- Table .Column .Type .Date -> initializer(" %T(name = %S)" , Poet .date, columnName)
59
- Table .Column .Type .Interval -> initializer(" duration(name = %S)" , columnName)
64
+ Table .Column .Type .Int8 -> initializer(" long(name = %S)$postFix " , columnName, * postArgs )
65
+ Table .Column .Type .Bool -> initializer(" bool(name = %S)$postFix " , columnName, * postArgs )
66
+ Table .Column .Type .VarChar -> initializer(" text(name = %S)$postFix " , columnName, * postArgs )
67
+ Table .Column .Type .Date -> initializer(" %T(name = %S)$postFix " , Poet .date, columnName, * postArgs )
68
+ Table .Column .Type .Interval -> initializer(" duration(name = %S)$postFix " , columnName, * postArgs )
60
69
Table .Column .Type .Int4Range -> initializer(
61
- " registerColumn(name = %S, type = %T())" ,
62
- columnName, typeNameInt4RangeColumnType
70
+ " registerColumn(name = %S, type = %T())$postFix " ,
71
+ columnName, typeNameInt4RangeColumnType, * postArgs
63
72
)
64
73
65
74
Table .Column .Type .Int8Range -> initializer(
66
- " registerColumn(name = %S, type = %T())" ,
67
- columnName, typeNameInt8RangeColumnType
75
+ " registerColumn(name = %S, type = %T())$postFix " ,
76
+ columnName, typeNameInt8RangeColumnType, * postArgs
68
77
)
69
78
70
79
Table .Column .Type .Int4MultiRange -> initializer(
71
- " registerColumn(name = %S, type = %T())" ,
72
- columnName, typeNameInt4MultiRangeColumnType
80
+ " registerColumn(name = %S, type = %T())$postFix " ,
81
+ columnName, typeNameInt4MultiRangeColumnType, * postArgs
73
82
)
74
83
75
84
Table .Column .Type .Int8MultiRange -> initializer(
76
- " registerColumn(name = %S, type = %T())" ,
77
- columnName, typeNameInt8MultiRangeColumnType
85
+ " registerColumn(name = %S, type = %T())$postFix " ,
86
+ columnName, typeNameInt8MultiRangeColumnType, * postArgs
78
87
)
79
88
80
- Table .Column .Type .Int4 -> initializer(" integer(name = %S)" , columnName)
89
+ Table .Column .Type .Int4 -> initializer(" integer(name = %S)$postFix " , columnName, * postArgs )
81
90
Table .Column .Type .Json -> initializer(
82
- " %T<%T>(name = %S, serialize = %T)" ,
83
- Poet .jsonColumn, Poet .jsonElement, columnName, Poet .json,
91
+ " %T<%T>(name = %S, serialize = %T)$postFix " ,
92
+ Poet .jsonColumn, Poet .jsonElement, columnName, Poet .json, * postArgs
84
93
)
85
94
86
95
Table .Column .Type .Jsonb -> initializer(
87
- " %T<%T>(name = %S, jsonConfig = %T)" ,
88
- Poet .jsonColumn, Poet .jsonElement, columnName, Poet .json,
96
+ " %T<%T>(name = %S, jsonConfig = %T)$postFix " ,
97
+ Poet .jsonColumn, Poet .jsonElement, columnName, Poet .json, * postArgs
89
98
)
90
99
91
100
is Table .Column .Type .Numeric -> initializer(
92
- " decimal(name = %S, precision = ${type.precision} , scale = ${type.scale} )" ,
93
- columnName,
101
+ " decimal(name = %S, precision = ${type.precision} , scale = ${type.scale} )$postFix " ,
102
+ columnName, * postArgs
103
+ )
104
+
105
+ Table .Column .Type .Int2 -> initializer(" short(name = %S)$postFix " , columnName, * postArgs)
106
+ Table .Column .Type .Text -> initializer(" text(name = %S)$postFix " , columnName, * postArgs)
107
+ Table .Column .Type .Time -> initializer(" %T(name = %S)$postFix " , Poet .time, columnName, * postArgs)
108
+ Table .Column .Type .Timestamp -> initializer(" %T(name = %S)$postFix " , Poet .timestamp, columnName, * postArgs)
109
+ Table .Column .Type .TimestampWithTimeZone -> initializer(
110
+ " %T(name = %S)$postFix " ,
111
+ Poet .timestampWithTimeZone, columnName, * postArgs
94
112
)
95
113
96
- Table .Column .Type .Int2 -> initializer(" short(name = %S)" , columnName)
97
- Table .Column .Type .Text -> initializer(" text(name = %S)" , columnName)
98
- Table .Column .Type .Time -> initializer(" %T(name = %S)" , Poet .time, columnName)
99
- Table .Column .Type .Timestamp -> initializer(" %T(name = %S)" , Poet .timestamp, columnName)
100
- Table .Column .Type .TimestampWithTimeZone -> initializer(" %T(name = %S)" , Poet .timestampWithTimeZone, columnName)
101
- Table .Column .Type .Uuid -> initializer(" uuid(name = %S)" , columnName)
114
+ Table .Column .Type .Uuid -> initializer(" uuid(name = %S)$postFix " , columnName, * postArgs)
102
115
Table .Column .Type .UnconstrainedNumeric -> initializer(
103
- " registerColumn(name = %S, type = %T())" ,
104
- columnName, typeNameUnconstrainedNumericColumnType
116
+ " registerColumn(name = %S, type = %T())$postFix " ,
117
+ columnName, typeNameUnconstrainedNumericColumnType, * postArgs
105
118
)
106
119
}
107
120
}
0 commit comments