1515 */
1616package org.mybatis.dynamic.sql.util.kotlin
1717
18+ import org.mybatis.dynamic.sql.AndOrCriteriaGroup
19+ import org.mybatis.dynamic.sql.BasicColumn
1820import org.mybatis.dynamic.sql.BindableColumn
1921import org.mybatis.dynamic.sql.ColumnAndConditionCriterion
2022import org.mybatis.dynamic.sql.CriteriaGroup
21- import org.mybatis.dynamic.sql.AndOrCriteriaGroup
22- import org.mybatis.dynamic.sql.BasicColumn
2323import org.mybatis.dynamic.sql.ExistsCriterion
2424import org.mybatis.dynamic.sql.NotCriterion
2525import org.mybatis.dynamic.sql.SqlBuilder
@@ -164,17 +164,17 @@ class GroupingCriteriaCollector {
164164 // receivers problem (https://youtrack.jetbrains.com/issue/KT-42435)
165165
166166 // 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())
168168
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())
170170
171171 infix fun <T : Any > BindableColumn<T>.isEqualTo (value : T ) =
172172 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isEqualTo(value))
173173
174- infix fun < T > BindableColumn<T>. isEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
174+ infix fun BindableColumn <* >. isEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
175175 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isEqualTo(subQuery))
176176
177- infix fun < T > BindableColumn<T >.isEqualTo (column : BasicColumn ) =
177+ infix fun BindableColumn <* >.isEqualTo (column : BasicColumn ) =
178178 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isEqualTo(column))
179179
180180 infix fun <T : Any > BindableColumn<T>.isEqualToWhenPresent (value : T ? ) =
@@ -183,10 +183,10 @@ class GroupingCriteriaCollector {
183183 infix fun <T : Any > BindableColumn<T>.isNotEqualTo (value : T ) =
184184 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotEqualTo(value))
185185
186- infix fun < T > BindableColumn<T>. isNotEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
186+ infix fun BindableColumn <* >. isNotEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
187187 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotEqualTo(subQuery))
188188
189- infix fun < T > BindableColumn<T >.isNotEqualTo (column : BasicColumn ) =
189+ infix fun BindableColumn <* >.isNotEqualTo (column : BasicColumn ) =
190190 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotEqualTo(column))
191191
192192 infix fun <T : Any > BindableColumn<T>.isNotEqualToWhenPresent (value : T ? ) =
@@ -195,10 +195,10 @@ class GroupingCriteriaCollector {
195195 infix fun <T : Any > BindableColumn<T>.isGreaterThan (value : T ) =
196196 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThan(value))
197197
198- infix fun < T > BindableColumn<T>. isGreaterThanSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
198+ infix fun BindableColumn <* >. isGreaterThan (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
199199 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThan(subQuery))
200200
201- infix fun < T > BindableColumn<T >.isGreaterThan (column : BasicColumn ) =
201+ infix fun BindableColumn <* >.isGreaterThan (column : BasicColumn ) =
202202 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThan(column))
203203
204204 infix fun <T : Any > BindableColumn<T>.isGreaterThanWhenPresent (value : T ? ) =
@@ -207,10 +207,10 @@ class GroupingCriteriaCollector {
207207 infix fun <T : Any > BindableColumn<T>.isGreaterThanOrEqualTo (value : T ) =
208208 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThanOrEqualTo(value))
209209
210- infix fun < T > BindableColumn<T>. isGreaterThanOrEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
210+ infix fun BindableColumn <* >. isGreaterThanOrEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
211211 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThanOrEqualTo(subQuery))
212212
213- infix fun < T > BindableColumn<T >.isGreaterThanOrEqualTo (column : BasicColumn ) =
213+ infix fun BindableColumn <* >.isGreaterThanOrEqualTo (column : BasicColumn ) =
214214 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isGreaterThanOrEqualTo(column))
215215
216216 infix fun <T : Any > BindableColumn<T>.isGreaterThanOrEqualToWhenPresent (value : T ? ) =
@@ -219,10 +219,10 @@ class GroupingCriteriaCollector {
219219 infix fun <T : Any > BindableColumn<T>.isLessThan (value : T ) =
220220 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThan(value))
221221
222- infix fun < T > BindableColumn<T>. isLessThanSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
222+ infix fun BindableColumn <* >. isLessThan (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
223223 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThan(subQuery))
224224
225- infix fun < T > BindableColumn<T >.isLessThan (column : BasicColumn ) =
225+ infix fun BindableColumn <* >.isLessThan (column : BasicColumn ) =
226226 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThan(column))
227227
228228 infix fun <T : Any > BindableColumn<T>.isLessThanWhenPresent (value : T ? ) =
@@ -231,10 +231,10 @@ class GroupingCriteriaCollector {
231231 infix fun <T : Any > BindableColumn<T>.isLessThanOrEqualTo (value : T ) =
232232 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThanOrEqualTo(value))
233233
234- infix fun < T > BindableColumn<T>. isLessThanOrEqualToSubQuery (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
234+ infix fun BindableColumn <* >. isLessThanOrEqualTo (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
235235 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThanOrEqualTo(subQuery))
236236
237- infix fun < T > BindableColumn<T >.isLessThanOrEqualTo (column : BasicColumn ) =
237+ infix fun BindableColumn <* >.isLessThanOrEqualTo (column : BasicColumn ) =
238238 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isLessThanOrEqualTo(column))
239239
240240 infix fun <T : Any > BindableColumn<T>.isLessThanOrEqualToWhenPresent (value : T ? ) =
@@ -245,7 +245,7 @@ class GroupingCriteriaCollector {
245245 infix fun <T : Any > BindableColumn<T>.isIn (values : Collection <T >) =
246246 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isIn(values))
247247
248- infix fun < T > BindableColumn<T >.isIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
248+ infix fun BindableColumn <* >.isIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
249249 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isIn(subQuery))
250250
251251 fun <T : Any > BindableColumn<T>.isInWhenPresent (vararg values : T ? ) = isInWhenPresent(values.asList())
@@ -258,7 +258,7 @@ class GroupingCriteriaCollector {
258258 infix fun <T : Any > BindableColumn<T>.isNotIn (values : Collection <T >) =
259259 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotIn(values))
260260
261- infix fun < T > BindableColumn<T >.isNotIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
261+ infix fun BindableColumn <* >.isNotIn (subQuery : KotlinSubQueryBuilder .() -> Unit ) =
262262 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotIn(subQuery))
263263
264264 fun <T : Any > BindableColumn<T>.isNotInWhenPresent (vararg values : T ? ) = isNotInWhenPresent(values.asList())
@@ -267,16 +267,24 @@ class GroupingCriteriaCollector {
267267 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotInWhenPresent(values))
268268
269269 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+ }
271273
272274 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+ }
274278
275279 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+ }
277283
278284 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+ }
280288
281289 // for string columns, but generic for columns with type handlers
282290 infix fun <T : Any > BindableColumn<T>.isLike (value : T ) =
@@ -332,3 +340,11 @@ class GroupingCriteriaCollector {
332340 infix fun BindableColumn<String>.isNotInCaseInsensitiveWhenPresent (values : Collection <String ?>? ) =
333341 invoke(org.mybatis.dynamic .sql.util.kotlin.elements.isNotInCaseInsensitiveWhenPresent(values))
334342}
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