
com.lightningkite.lightningdb.ConditionBuilder.kt Maven / Gradle / Ivy
@file:SharedCode
package com.lightningkite.lightningdb
import com.lightningkite.khrysalis.*
import kotlin.reflect.KProperty1
fun path(): DataClassPath = DataClassPathSelf()
inline fun condition(setup: (DataClassPath) -> Condition): Condition =
path().let(setup)
val DataClassPath.always: Condition get() = Condition.Always()
val DataClassPath.never: Condition get() = Condition.Never()
infix fun DataClassPath.eq(value: T) = mapCondition(Condition.Equal(value))
infix fun DataClassPath.neq(value: T) = mapCondition(Condition.NotEqual(value))
infix fun DataClassPath.ne(value: T) = mapCondition(Condition.NotEqual(value))
@JsName("xDataClassPathInsideSet") infix fun DataClassPath.inside(values: Set) = mapCondition(Condition.Inside(values.toList()))
infix fun DataClassPath.inside(values: List) = mapCondition(Condition.Inside(values))
@JsName("xDataClassPathNinSet") infix fun DataClassPath.nin(values: Set) = mapCondition(Condition.NotInside(values.toList()))
infix fun DataClassPath.nin(values: List) = mapCondition(Condition.NotInside(values))
@JsName("xDataClassPathNotInSet") infix fun DataClassPath.notIn(values: Set) = mapCondition(Condition.NotInside(values.toList()))
infix fun DataClassPath.notIn(values: List) = mapCondition(Condition.NotInside(values))
infix fun > DataClassPath.gt(value: T) = mapCondition(Condition.GreaterThan(value))
infix fun > DataClassPath.lt(value: T) = mapCondition(Condition.LessThan(value))
infix fun > DataClassPath.gte(value: T) = mapCondition(Condition.GreaterThanOrEqual(value))
infix fun > DataClassPath.lte(value: T) = mapCondition(Condition.LessThanOrEqual(value))
infix fun DataClassPath.allClear(mask: Int) = mapCondition(Condition.IntBitsClear(mask))
infix fun DataClassPath.allSet(mask: Int) = mapCondition(Condition.IntBitsSet(mask))
infix fun DataClassPath.anyClear(mask: Int) = mapCondition(Condition.IntBitsAnyClear(mask))
infix fun DataClassPath.anySet(mask: Int) = mapCondition(Condition.IntBitsAnySet(mask))
infix fun DataClassPath.contains(value: String) = mapCondition(Condition.StringContains(value, ignoreCase = true))
@JsName("xDataClassPathContainsCased") fun DataClassPath.contains(value: String, ignoreCase: Boolean) = mapCondition(Condition.StringContains(value, ignoreCase = ignoreCase))
fun DataClassPath.fullTextSearch(value: String, ignoreCase: Boolean, ) = mapCondition(Condition.FullTextSearch(value, ignoreCase = ignoreCase))
@JsName("xDataClassPathListAll") @JvmName("listAll") inline infix fun DataClassPath>.all(condition: (DataClassPath) -> Condition) = mapCondition(Condition.ListAllElements(path().let(condition)))
@JsName("xDataClassPathListAny") @JvmName("listAny") inline infix fun DataClassPath>.any(condition: (DataClassPath) -> Condition) = mapCondition(Condition.ListAnyElements(path().let(condition)))
@JsName("xDataClassPathListSizedEqual") @JvmName("listSizedEqual") infix fun DataClassPath>.sizesEquals(count: Int) = mapCondition(Condition.ListSizesEquals(count))
@JsName("xDataClassPathSetAll") @JvmName("setAll") inline infix fun DataClassPath>.all(condition: (DataClassPath) -> Condition) = mapCondition(Condition.SetAllElements(path().let(condition)))
@JsName("xDataClassPathSetAny") @JvmName("setAny") inline infix fun DataClassPath>.any(condition: (DataClassPath) -> Condition) = mapCondition(Condition.SetAnyElements(path().let(condition)))
@JsName("xDataClassPathSetSizedEqual") @JvmName("setSizedEqual") infix fun DataClassPath>.sizesEquals(count: Int) = mapCondition(Condition.SetSizesEquals(count))
infix fun DataClassPath>.containsKey(key: String) = mapCondition(Condition.Exists(key))
inline infix fun DataClassPath.condition(make: (DataClassPath) -> Condition): Condition = mapCondition(make(path()))
© 2015 - 2025 Weber Informatics LLC | Privacy Policy