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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy