From ed5d63cc2839b9623560f857a4b016d6a0a4da55 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Sun, 29 Dec 2024 16:56:47 +0300 Subject: [PATCH] Nullable expressions unwrapper --- .../serdha/api/v0/Expression.kt | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/Expression.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/Expression.kt index ce1bd7a..a73949f 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/Expression.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/Expression.kt @@ -7,20 +7,13 @@ import kotlinx.datetime.LocalTime import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType public interface Expression, OwnerBuilderUserExtension : Any> { - - public interface Builder { - @Target(AnnotationTarget.FUNCTION) - @Retention(AnnotationRetention.BINARY) - @RequiresOptIn - public annotation class DynamicTyping - - public fun > equals( + public fun > equals( left: Expression<*, DatabaseType, OwnerBuilderUserExtension>, right: Expression<*, DatabaseType, OwnerBuilderUserExtension>, ): Expression - public fun > notEquals( + public fun > notEquals( left: Expression<*, DatabaseType, OwnerBuilderUserExtension>, right: Expression<*, DatabaseType, OwnerBuilderUserExtension>, ): Expression = @@ -442,7 +435,24 @@ public interface Expression, public fun constantOf(v: LocalTime): Expression public fun constantOf(v: LocalDateTime): Expression public fun constantOf(v: Instant): Expression + @OptIn(ExperimentalUnsignedTypes::class) public fun constantOf(v: ByteArray): Expression + + public fun , RetRuntimeType, RetDatabaseType : ColumnType> ifNull( + nullable: Expression, OwnerBuilderUserExtension>, + onValue: (Expression) -> Expression, + onNull: () -> Expression + ): Expression + + public fun > notNullAnd( + nullable: Expression, OwnerBuilderUserExtension>, + onValue: (Expression) -> Expression, + ): Expression + + public fun > nullOr( + nullable: Expression, OwnerBuilderUserExtension>, + onValue: (Expression) -> Expression, + ): Expression } } \ No newline at end of file