@@ -32,8 +32,8 @@ object JdbcControllers {
3232 // Postgrees comes with its own default encoders, to exclude them need to override this property direct
3333 override val encodingConfig =
3434 encodingConfig.copy(
35- additionalEncoders = encodingConfig.additionalEncoders + AdditionalPostgresEncoding .encoders,
36- additionalDecoders = encodingConfig.additionalDecoders + AdditionalPostgresEncoding .decoders
35+ additionalEncoders = encodingConfig.additionalEncoders + JsonObjectEncoding .encoders,
36+ additionalDecoders = encodingConfig.additionalDecoders + JsonObjectEncoding .decoders
3737 )
3838
3939 // Postgres does not support Types.TIME_WITH_TIMEZONE as a JDBC type but does have a `TIME WITH TIMEZONE` datatype this is puzzling.
@@ -59,29 +59,35 @@ object JdbcControllers {
5959
6060 override val encodingConfig =
6161 encodingConfig.copy(
62- additionalEncoders = encodingConfig.additionalEncoders + AdditionalPostgresEncoding .encoders,
63- additionalDecoders = encodingConfig.additionalDecoders + AdditionalPostgresEncoding .decoders
62+ additionalEncoders = encodingConfig.additionalEncoders + JsonObjectEncoding .encoders,
63+ additionalDecoders = encodingConfig.additionalDecoders + JsonObjectEncoding .decoders
6464 )
6565
6666 companion object { }
6767 }
6868
6969 open class H2 (
7070 override val database : DataSource ,
71- override val encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
71+ encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
7272 ): JdbcController(database) {
7373 override val encodingApi: JdbcSqlEncoding =
7474 object : JavaSqlEncoding <Connection , PreparedStatement , ResultSet >,
7575 BasicEncoding <Connection , PreparedStatement , ResultSet > by JdbcBasicEncoding ,
7676 JavaTimeEncoding <Connection , PreparedStatement , ResultSet > by JdbcTimeEncoding (),
7777 JavaUuidEncoding <Connection , PreparedStatement , ResultSet > by JdbcUuidObjectEncoding {}
7878
79+ override val encodingConfig =
80+ encodingConfig.copy(
81+ additionalEncoders = encodingConfig.additionalEncoders + JsonTextEncoding .encoders,
82+ additionalDecoders = encodingConfig.additionalDecoders + JsonTextEncoding .decoders
83+ )
84+
7985 companion object { }
8086 }
8187
8288 open class Mysql (
8389 override val database : DataSource ,
84- override val encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
90+ encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
8591 ): JdbcController(database) {
8692 override val encodingApi: JdbcSqlEncoding =
8793 object : JavaSqlEncoding <Connection , PreparedStatement , ResultSet >,
@@ -95,19 +101,32 @@ object JdbcControllers {
95101 override val jdbcTypeOfOffsetTime = Types .TIME
96102 override val jdbcTypeOfOffsetDateTime = Types .TIMESTAMP
97103 }
104+
105+ override val encodingConfig =
106+ encodingConfig.copy(
107+ additionalEncoders = encodingConfig.additionalEncoders + JsonObjectEncoding .encoders,
108+ additionalDecoders = encodingConfig.additionalDecoders + JsonObjectEncoding .decoders
109+ )
110+
98111 companion object { }
99112 }
100113
101114 open class Sqlite (
102115 override val database : DataSource ,
103- override val encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
116+ encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
104117 ): JdbcController(database) {
105118 override val encodingApi: JdbcSqlEncoding =
106119 object : JavaSqlEncoding <Connection , PreparedStatement , ResultSet >,
107120 BasicEncoding <Connection , PreparedStatement , ResultSet > by JdbcBasicEncoding ,
108121 JavaTimeEncoding <Connection , PreparedStatement , ResultSet > by JdbcTimeEncodingLegacy ,
109122 JavaUuidEncoding <Connection , PreparedStatement , ResultSet > by JdbcUuidStringEncoding {}
110123
124+ override val encodingConfig =
125+ encodingConfig.copy(
126+ additionalEncoders = encodingConfig.additionalEncoders + JsonTextEncoding .encoders,
127+ additionalDecoders = encodingConfig.additionalDecoders + JsonTextEncoding .decoders
128+ )
129+
111130 protected override open suspend fun <T > runActionReturningScoped (act : ControllerActionReturning <T >, options : JdbcExecutionOptions ): Flow <T > =
112131 flowWithConnection(options) {
113132 val conn = localConnection()
@@ -159,14 +178,20 @@ object JdbcControllers {
159178
160179 open class Oracle (
161180 override val database : DataSource ,
162- override val encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
181+ encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
163182 ): JdbcController(database) {
164183 override val encodingApi: JdbcSqlEncoding =
165184 object : JavaSqlEncoding <Connection , PreparedStatement , ResultSet >,
166185 BasicEncoding <Connection , PreparedStatement , ResultSet > by JdbcEncodingOracle ,
167186 JavaTimeEncoding <Connection , PreparedStatement , ResultSet > by OracleTimeEncoding ,
168187 JavaUuidEncoding <Connection , PreparedStatement , ResultSet > by JdbcUuidStringEncoding {}
169188
189+ override val encodingConfig =
190+ encodingConfig.copy(
191+ additionalEncoders = encodingConfig.additionalEncoders + JsonTextEncoding .encoders,
192+ additionalDecoders = encodingConfig.additionalDecoders + JsonTextEncoding .decoders
193+ )
194+
170195 object OracleTimeEncoding: JdbcTimeEncoding() {
171196 // Normally it is Types.TIME by in that case Oracle truncates the milliseconds
172197 override val jdbcTypeOfLocalTime = Types .TIMESTAMP
@@ -193,14 +218,20 @@ object JdbcControllers {
193218
194219 open class SqlServer (
195220 override val database : DataSource ,
196- override val encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
221+ encodingConfig : JdbcEncodingConfig = JdbcEncodingConfig .Default
197222 ): JdbcController(database) {
198223 override val encodingApi: JdbcSqlEncoding =
199224 object : JavaSqlEncoding <Connection , PreparedStatement , ResultSet >,
200225 BasicEncoding <Connection , PreparedStatement , ResultSet > by JdbcBasicEncoding ,
201226 JavaTimeEncoding <Connection , PreparedStatement , ResultSet > by SqlServerTimeEncoding ,
202227 JavaUuidEncoding <Connection , PreparedStatement , ResultSet > by JdbcUuidStringEncoding {}
203228
229+ override val encodingConfig =
230+ encodingConfig.copy(
231+ additionalEncoders = encodingConfig.additionalEncoders + JsonTextEncoding .encoders,
232+ additionalDecoders = encodingConfig.additionalDecoders + JsonTextEncoding .decoders
233+ )
234+
204235 object SqlServerTimeEncoding: JdbcTimeEncoding() {
205236 // Override java.util.Date encoding to use TIMESTAMP_WITH_TIMEZONE for DATETIMEOFFSET columns
206237 override val JDateEncoder : JdbcEncoderAny < java.util.Date > = JdbcEncoderAny (Types .TIMESTAMP_WITH_TIMEZONE , java.util.Date ::class ) { ctx, v, i ->
0 commit comments