Skip to content

Commit efc4727

Browse files
committed
Add Array based "in" function in Kotlin
These functions allow a more nature use of an Array as an input for an "in" condition. They also allow easy reuse of a vararg argument in a function.
1 parent ad48f44 commit efc4727

File tree

5 files changed

+316
-9
lines changed

5 files changed

+316
-9
lines changed

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/GroupingCriteriaCollector.kt

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,10 @@ open class GroupingCriteriaCollector : SubCriteriaCollector() {
317317

318318
fun <T> BindableColumn<T>.isIn(vararg values: T & Any) = isIn(values.asList())
319319

320+
@JvmName("isInArray")
321+
infix fun <T> BindableColumn<T>.isIn(values: Array<out T & Any>) =
322+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isIn(values))
323+
320324
infix fun <T> BindableColumn<T>.isIn(values: Collection<T & Any>) =
321325
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isIn(values))
322326

@@ -325,11 +329,19 @@ open class GroupingCriteriaCollector : SubCriteriaCollector() {
325329

326330
fun <T> BindableColumn<T>.isInWhenPresent(vararg values: T?) = isInWhenPresent(values.asList())
327331

332+
@JvmName("isInArrayWhenPresent")
333+
infix fun <T> BindableColumn<T>.isInWhenPresent(values: Array<out T?>?) =
334+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isInWhenPresent(values))
335+
328336
infix fun <T> BindableColumn<T>.isInWhenPresent(values: Collection<T?>?) =
329337
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isInWhenPresent(values))
330338

331339
fun <T> BindableColumn<T>.isNotIn(vararg values: T & Any) = isNotIn(values.asList())
332340

341+
@JvmName("isNotInArray")
342+
infix fun <T> BindableColumn<T>.isNotIn(values: Array<out T & Any>) =
343+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotIn(values))
344+
333345
infix fun <T> BindableColumn<T>.isNotIn(values: Collection<T & Any>) =
334346
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotIn(values))
335347

@@ -338,6 +350,10 @@ open class GroupingCriteriaCollector : SubCriteriaCollector() {
338350

339351
fun <T> BindableColumn<T>.isNotInWhenPresent(vararg values: T?) = isNotInWhenPresent(values.asList())
340352

353+
@JvmName("isNotInArrayWhenPresent")
354+
infix fun <T> BindableColumn<T>.isNotInWhenPresent(values: Array<out T?>?) =
355+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotInWhenPresent(values))
356+
341357
infix fun <T> BindableColumn<T>.isNotInWhenPresent(values: Collection<T?>?) =
342358
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotInWhenPresent(values))
343359

@@ -394,24 +410,40 @@ open class GroupingCriteriaCollector : SubCriteriaCollector() {
394410

395411
fun BindableColumn<String>.isInCaseInsensitive(vararg values: String) = isInCaseInsensitive(values.asList())
396412

413+
@JvmName("isInArrayCaseInsensitive")
414+
infix fun BindableColumn<String>.isInCaseInsensitive(values: Array<out String>) =
415+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isInCaseInsensitive(values))
416+
397417
infix fun BindableColumn<String>.isInCaseInsensitive(values: Collection<String>) =
398418
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isInCaseInsensitive(values))
399419

400420
fun BindableColumn<String>.isInCaseInsensitiveWhenPresent(vararg values: String?) =
401421
isInCaseInsensitiveWhenPresent(values.asList())
402422

423+
@JvmName("isInArrayCaseInsensitiveWhenPresent")
424+
infix fun BindableColumn<String>.isInCaseInsensitiveWhenPresent(values: Array<out String?>?) =
425+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isInCaseInsensitiveWhenPresent(values))
426+
403427
infix fun BindableColumn<String>.isInCaseInsensitiveWhenPresent(values: Collection<String?>?) =
404428
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isInCaseInsensitiveWhenPresent(values))
405429

406430
fun BindableColumn<String>.isNotInCaseInsensitive(vararg values: String) =
407431
isNotInCaseInsensitive(values.asList())
408432

433+
@JvmName("isNotInArrayCaseInsensitive")
434+
infix fun BindableColumn<String>.isNotInCaseInsensitive(values: Array<out String>) =
435+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotInCaseInsensitive(values))
436+
409437
infix fun BindableColumn<String>.isNotInCaseInsensitive(values: Collection<String>) =
410438
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotInCaseInsensitive(values))
411439

412440
fun BindableColumn<String>.isNotInCaseInsensitiveWhenPresent(vararg values: String?) =
413441
isNotInCaseInsensitiveWhenPresent(values.asList())
414442

443+
@JvmName("isNotInArrayCaseInsensitiveWhenPresent")
444+
infix fun BindableColumn<String>.isNotInCaseInsensitiveWhenPresent(values: Array<out String?>?) =
445+
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotInCaseInsensitiveWhenPresent(values))
446+
415447
infix fun BindableColumn<String>.isNotInCaseInsensitiveWhenPresent(values: Collection<String?>?) =
416448
invoke(org.mybatis.dynamic.sql.util.kotlin.elements.isNotInCaseInsensitiveWhenPresent(values))
417449

src/main/kotlin/org/mybatis/dynamic/sql/util/kotlin/elements/SqlElements.kt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,24 +262,36 @@ fun <T> isLessThanOrEqualToWhenPresent(value: T?): IsLessThanOrEqualTo<T> =
262262

263263
fun <T> isIn(vararg values: T & Any): IsIn<T> = isIn(values.asList())
264264

265+
@JvmName("isInArray")
266+
fun <T> isIn(values: Array<out T & Any>): IsIn<T> = SqlBuilder.isIn(values.asList())
267+
265268
fun <T> isIn(values: Collection<T & Any>): IsIn<T> = SqlBuilder.isIn(values)
266269

267270
fun <T> isIn(subQuery: KotlinSubQueryBuilder.() -> Unit): IsInWithSubselect<T> =
268271
SqlBuilder.isIn(KotlinSubQueryBuilder().apply(subQuery))
269272

270273
fun <T> isInWhenPresent(vararg values: T?): IsIn<T> = isInWhenPresent(values.asList())
271274

275+
@JvmName("isInArrayWhenPresent")
276+
fun <T> isInWhenPresent(values: Array<out T?>?): IsIn<T> = SqlBuilder.isInWhenPresent(values?.asList())
277+
272278
fun <T> isInWhenPresent(values: Collection<T?>?): IsIn<T> = SqlBuilder.isInWhenPresent(values)
273279

274280
fun <T> isNotIn(vararg values: T & Any): IsNotIn<T> = isNotIn(values.asList())
275281

282+
@JvmName("isNotInArray")
283+
fun <T> isNotIn(values: Array<out T & Any>): IsNotIn<T> = SqlBuilder.isNotIn(values.asList())
284+
276285
fun <T> isNotIn(values: Collection<T & Any>): IsNotIn<T> = SqlBuilder.isNotIn(values)
277286

278287
fun <T> isNotIn(subQuery: KotlinSubQueryBuilder.() -> Unit): IsNotInWithSubselect<T> =
279288
SqlBuilder.isNotIn(KotlinSubQueryBuilder().apply(subQuery))
280289

281290
fun <T> isNotInWhenPresent(vararg values: T?): IsNotIn<T> = isNotInWhenPresent(values.asList())
282291

292+
@JvmName("isNotInArrayWhenPresent")
293+
fun <T> isNotInWhenPresent(values: Array<out T?>?): IsNotIn<T> = SqlBuilder.isNotInWhenPresent(values?.asList())
294+
283295
fun <T> isNotInWhenPresent(values: Collection<T?>?): IsNotIn<T> = SqlBuilder.isNotInWhenPresent(values)
284296

285297
fun <T> isBetween(value1: T & Any): BetweenBuilder<T & Any> = BetweenBuilder(value1)
@@ -318,22 +330,37 @@ fun isNotLikeCaseInsensitiveWhenPresent(value: String?): IsNotLikeCaseInsensitiv
318330

319331
fun isInCaseInsensitive(vararg values: String): IsInCaseInsensitive = isInCaseInsensitive(values.asList())
320332

333+
@JvmName("isInArrayCaseInsensitive")
334+
fun isInCaseInsensitive(values: Array<out String>): IsInCaseInsensitive = SqlBuilder.isInCaseInsensitive(values.asList())
335+
321336
fun isInCaseInsensitive(values: Collection<String>): IsInCaseInsensitive = SqlBuilder.isInCaseInsensitive(values)
322337

323338
fun isInCaseInsensitiveWhenPresent(vararg values: String?): IsInCaseInsensitive =
324339
isInCaseInsensitiveWhenPresent(values.asList())
325340

341+
@JvmName("isInArrayCaseInsensitiveWhenPresent")
342+
fun isInCaseInsensitiveWhenPresent(values: Array<out String?>?): IsInCaseInsensitive =
343+
SqlBuilder.isInCaseInsensitiveWhenPresent(values?.asList())
344+
326345
fun isInCaseInsensitiveWhenPresent(values: Collection<String?>?): IsInCaseInsensitive =
327346
SqlBuilder.isInCaseInsensitiveWhenPresent(values)
328347

329348
fun isNotInCaseInsensitive(vararg values: String): IsNotInCaseInsensitive = isNotInCaseInsensitive(values.asList())
330349

350+
@JvmName("isNotInArrayCaseInsensitive")
351+
fun isNotInCaseInsensitive(values: Array<out String>): IsNotInCaseInsensitive =
352+
SqlBuilder.isNotInCaseInsensitive(values.asList())
353+
331354
fun isNotInCaseInsensitive(values: Collection<String>): IsNotInCaseInsensitive =
332355
SqlBuilder.isNotInCaseInsensitive(values)
333356

334357
fun isNotInCaseInsensitiveWhenPresent(vararg values: String?): IsNotInCaseInsensitive =
335358
isNotInCaseInsensitiveWhenPresent(values.asList())
336359

360+
@JvmName("isNotInArrayCaseInsensitiveWhenPresent")
361+
fun isNotInCaseInsensitiveWhenPresent(values: Array<out String?>?): IsNotInCaseInsensitive =
362+
SqlBuilder.isNotInCaseInsensitiveWhenPresent(values?.asList())
363+
337364
fun isNotInCaseInsensitiveWhenPresent(values: Collection<String?>?): IsNotInCaseInsensitive =
338365
SqlBuilder.isNotInCaseInsensitiveWhenPresent(values)
339366

0 commit comments

Comments
 (0)