15
15
*/
16
16
package org.mybatis.dynamic.sql.util.kotlin
17
17
18
+ import org.mybatis.dynamic.sql.AndOrCriteriaGroup
19
+ import org.mybatis.dynamic.sql.BasicColumn
18
20
import org.mybatis.dynamic.sql.BindableColumn
19
21
import org.mybatis.dynamic.sql.ColumnAndConditionCriterion
20
22
import org.mybatis.dynamic.sql.CriteriaGroup
21
- import org.mybatis.dynamic.sql.AndOrCriteriaGroup
22
- import org.mybatis.dynamic.sql.BasicColumn
23
23
import org.mybatis.dynamic.sql.ExistsCriterion
24
24
import org.mybatis.dynamic.sql.NotCriterion
25
25
import org.mybatis.dynamic.sql.SqlBuilder
@@ -164,17 +164,17 @@ class GroupingCriteriaCollector {
164
164
// receivers problem (https://youtrack.jetbrains.com/issue/KT-42435)
165
165
166
166
// conditions for all data types
167
- fun < T > BindableColumn<T >.isNull () = invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNull())
167
+ fun BindableColumn <* >.isNull () = invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNull())
168
168
169
- fun < T > BindableColumn<T >.isNotNull () = invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotNull())
169
+ fun BindableColumn <* >.isNotNull () = invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotNull())
170
170
171
171
infix fun <T : Any > BindableColumn<T>.isEqualTo (value : T ) =
172
172
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isEqualTo(value))
173
173
174
- infix fun < T > BindableColumn<T>. isEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
174
+ infix fun BindableColumn <* >. isEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
175
175
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isEqualTo(subQuery))
176
176
177
- infix fun < T > BindableColumn<T >.isEqualTo (column : BasicColumn ) =
177
+ infix fun BindableColumn <* >.isEqualTo (column : BasicColumn ) =
178
178
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isEqualTo(column))
179
179
180
180
infix fun <T : Any > BindableColumn<T>.isEqualToWhenPresent (value : T ? ) =
@@ -183,10 +183,10 @@ class GroupingCriteriaCollector {
183
183
infix fun <T : Any > BindableColumn<T>.isNotEqualTo (value : T ) =
184
184
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotEqualTo(value))
185
185
186
- infix fun < T > BindableColumn<T>. isNotEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
186
+ infix fun BindableColumn <* >. isNotEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
187
187
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotEqualTo(subQuery))
188
188
189
- infix fun < T > BindableColumn<T >.isNotEqualTo (column : BasicColumn ) =
189
+ infix fun BindableColumn <* >.isNotEqualTo (column : BasicColumn ) =
190
190
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotEqualTo(column))
191
191
192
192
infix fun <T : Any > BindableColumn<T>.isNotEqualToWhenPresent (value : T ? ) =
@@ -195,10 +195,10 @@ class GroupingCriteriaCollector {
195
195
infix fun <T : Any > BindableColumn<T>.isGreaterThan (value : T ) =
196
196
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThan(value))
197
197
198
- infix fun < T > BindableColumn<T>. isGreaterThanSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
198
+ infix fun BindableColumn <* >. isGreaterThan (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
199
199
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThan(subQuery))
200
200
201
- infix fun < T > BindableColumn<T >.isGreaterThan (column : BasicColumn ) =
201
+ infix fun BindableColumn <* >.isGreaterThan (column : BasicColumn ) =
202
202
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThan(column))
203
203
204
204
infix fun <T : Any > BindableColumn<T>.isGreaterThanWhenPresent (value : T ? ) =
@@ -207,10 +207,10 @@ class GroupingCriteriaCollector {
207
207
infix fun <T : Any > BindableColumn<T>.isGreaterThanOrEqualTo (value : T ) =
208
208
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThanOrEqualTo(value))
209
209
210
- infix fun < T > BindableColumn<T>. isGreaterThanOrEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
210
+ infix fun BindableColumn <* >. isGreaterThanOrEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
211
211
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThanOrEqualTo(subQuery))
212
212
213
- infix fun < T > BindableColumn<T >.isGreaterThanOrEqualTo (column : BasicColumn ) =
213
+ infix fun BindableColumn <* >.isGreaterThanOrEqualTo (column : BasicColumn ) =
214
214
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThanOrEqualTo(column))
215
215
216
216
infix fun <T : Any > BindableColumn<T>.isGreaterThanOrEqualToWhenPresent (value : T ? ) =
@@ -219,10 +219,10 @@ class GroupingCriteriaCollector {
219
219
infix fun <T : Any > BindableColumn<T>.isLessThan (value : T ) =
220
220
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThan(value))
221
221
222
- infix fun < T > BindableColumn<T>. isLessThanSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
222
+ infix fun BindableColumn <* >. isLessThan (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
223
223
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThan(subQuery))
224
224
225
- infix fun < T > BindableColumn<T >.isLessThan (column : BasicColumn ) =
225
+ infix fun BindableColumn <* >.isLessThan (column : BasicColumn ) =
226
226
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThan(column))
227
227
228
228
infix fun <T : Any > BindableColumn<T>.isLessThanWhenPresent (value : T ? ) =
@@ -231,10 +231,10 @@ class GroupingCriteriaCollector {
231
231
infix fun <T : Any > BindableColumn<T>.isLessThanOrEqualTo (value : T ) =
232
232
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThanOrEqualTo(value))
233
233
234
- infix fun < T > BindableColumn<T>. isLessThanOrEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
234
+ infix fun BindableColumn <* >. isLessThanOrEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
235
235
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThanOrEqualTo(subQuery))
236
236
237
- infix fun < T > BindableColumn<T >.isLessThanOrEqualTo (column : BasicColumn ) =
237
+ infix fun BindableColumn <* >.isLessThanOrEqualTo (column : BasicColumn ) =
238
238
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThanOrEqualTo(column))
239
239
240
240
infix fun <T : Any > BindableColumn<T>.isLessThanOrEqualToWhenPresent (value : T ? ) =
@@ -245,7 +245,7 @@ class GroupingCriteriaCollector {
245
245
infix fun <T : Any > BindableColumn<T>.isIn (values : Collection <T >) =
246
246
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isIn(values))
247
247
248
- infix fun < T > BindableColumn<T >.isIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
248
+ infix fun BindableColumn <* >.isIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
249
249
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isIn(subQuery))
250
250
251
251
fun <T : Any > BindableColumn<T>.isInWhenPresent (vararg values : T ? ) = isInWhenPresent(values.asList())
@@ -258,7 +258,7 @@ class GroupingCriteriaCollector {
258
258
infix fun <T : Any > BindableColumn<T>.isNotIn (values : Collection <T >) =
259
259
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotIn(values))
260
260
261
- infix fun < T > BindableColumn<T >.isNotIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
261
+ infix fun BindableColumn <* >.isNotIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
262
262
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotIn(subQuery))
263
263
264
264
fun <T : Any > BindableColumn<T>.isNotInWhenPresent (vararg values : T ? ) = isNotInWhenPresent(values.asList())
@@ -267,16 +267,24 @@ class GroupingCriteriaCollector {
267
267
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotInWhenPresent(values))
268
268
269
269
infix fun <T : Any > BindableColumn<T>.isBetween (value1 : T ) =
270
- InfixBetweenBuilder (value1) { invoke(it) }
270
+ SecondValueCollector <T > {
271
+ invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isBetween(value1).and (it))
272
+ }
271
273
272
274
infix fun <T : Any > BindableColumn<T>.isBetweenWhenPresent (value1 : T ? ) =
273
- InfixBetweenWhenPresentBuilder (value1) { invoke(it) }
275
+ NullableSecondValueCollector <T > {
276
+ invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isBetweenWhenPresent(value1).and (it))
277
+ }
274
278
275
279
infix fun <T : Any > BindableColumn<T>.isNotBetween (value1 : T ) =
276
- InfixNotBetweenBuilder (value1) { invoke(it) }
280
+ SecondValueCollector <T > {
281
+ invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotBetween(value1).and (it))
282
+ }
277
283
278
284
infix fun <T : Any > BindableColumn<T>.isNotBetweenWhenPresent (value1 : T ? ) =
279
- InfixNotBetweenWhenPresentBuilder (value1) { invoke(it) }
285
+ NullableSecondValueCollector <T > {
286
+ invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotBetweenWhenPresent(value1).and (it))
287
+ }
280
288
281
289
// for string columns, but generic for columns with type handlers
282
290
infix fun <T : Any > BindableColumn<T>.isLike (value : T ) =
@@ -332,3 +340,11 @@ class GroupingCriteriaCollector {
332
340
infix fun BindableColumn<String>.isNotInCaseInsensitiveWhenPresent (values : Collection <String ?>? ) =
333
341
invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotInCaseInsensitiveWhenPresent(values))
334
342
}
343
+
344
+ class SecondValueCollector <T > (private val consumer : (T ) -> Unit ) {
345
+ infix fun and (value2 : T ) = consumer.invoke(value2)
346
+ }
347
+
348
+ class NullableSecondValueCollector <T > (private val consumer : (T ? ) -> Unit ) {
349
+ infix fun and (value2 : T ? ) = consumer.invoke(value2)
350
+ }
0 commit comments