All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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