package ru.landgrafhomyak.serdha.api.v0 import kotlinx.datetime.Instant import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDateTime import kotlinx.datetime.LocalTime import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType public interface Expression, OwnerBuilderUserExtension : Any> { public interface Builder { public fun > equals( left: Expression<*, DatabaseType, OwnerBuilderUserExtension>, right: Expression<*, DatabaseType, OwnerBuilderUserExtension>, ): Expression public fun > notEquals( left: Expression<*, DatabaseType, OwnerBuilderUserExtension>, right: Expression<*, DatabaseType, OwnerBuilderUserExtension>, ): Expression = this.logicalNot(this.equals(left, right)) public fun isNull( e: Expression<*, ColumnType.Nullable<*, *>, OwnerBuilderUserExtension>, ): Expression public fun isNotNull( e: Expression<*, ColumnType.Nullable<*, *>, OwnerBuilderUserExtension>, ): Expression = this.logicalNot(this.isNull(e)) public fun logicalAnd( left: Expression<*, ColumnType.BOOLEAN, OwnerBuilderUserExtension>, right: Expression<*, ColumnType.BOOLEAN, OwnerBuilderUserExtension>, ): Expression public fun logicalOr( left: Expression<*, ColumnType.BOOLEAN, OwnerBuilderUserExtension>, right: Expression<*, ColumnType.BOOLEAN, OwnerBuilderUserExtension>, ): Expression public fun logicalXor( left: Expression<*, ColumnType.BOOLEAN, OwnerBuilderUserExtension>, right: Expression<*, ColumnType.BOOLEAN, OwnerBuilderUserExtension>, ): Expression = this.notEquals(left, right) public fun logicalNot( e: Expression<*, ColumnType.BOOLEAN, OwnerBuilderUserExtension>, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLess( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreater( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpIntegersGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun extendIntegerToS16( e: Expression, ): Expression public fun extendIntegerToS16( e: Expression, ): Expression public fun extendIntegerToU16( e: Expression, ): Expression public fun extendIntegerToS32( e: Expression, ): Expression public fun extendIntegerToS32( e: Expression, ): Expression public fun extendIntegerToS32( e: Expression, ): Expression public fun extendIntegerToS32( e: Expression, ): Expression public fun extendIntegerToU32( e: Expression, ): Expression public fun extendIntegerToU32( e: Expression, ): Expression public fun extendIntegerToS64( e: Expression, ): Expression public fun extendIntegerToS64( e: Expression, ): Expression public fun extendIntegerToS64( e: Expression, ): Expression public fun extendIntegerToS64( e: Expression, ): Expression public fun extendIntegerToS64( e: Expression, ): Expression public fun extendIntegerToS64( e: Expression, ): Expression public fun extendIntegerToU64( e: Expression, ): Expression public fun extendIntegerToU64( e: Expression, ): Expression public fun extendIntegerToU64( e: Expression, ): Expression public fun extendFractionalToDouble( e: Expression ): Expression public fun cmpFractionalLess( left: Expression, right: Expression, ): Expression public fun cmpFractionalLess( left: Expression, right: Expression, ): Expression public fun cmpFractionalLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpFractionalLessOrEquals( left: Expression, right: Expression, ): Expression public fun cmpFractionalGreater( left: Expression, right: Expression, ): Expression public fun cmpFractionalGreater( left: Expression, right: Expression, ): Expression public fun cmpFractionalGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpFractionalGreaterOrEquals( left: Expression, right: Expression, ): Expression public fun cmpLocalDateEarlier( left: Expression, right: Expression, ): Expression public fun cmpLocalDateEarlierOrSimultaneous( left: Expression, right: Expression, ): Expression public fun cmpLocalDateLater( left: Expression, right: Expression, ): Expression public fun cmpLocalDateLaterOrSimultaneous( left: Expression, right: Expression, ): Expression public fun cmpLocalTimeEarlier( left: Expression, right: Expression, ): Expression public fun cmpLocalTimeEarlierOrSimultaneous( left: Expression, right: Expression, ): Expression public fun cmpLocalTimeLater( left: Expression, right: Expression, ): Expression public fun cmpLocalTimeLaterOrSimultaneous( left: Expression, right: Expression, ): Expression public fun cmpLocalDateTimeEarlier( left: Expression, right: Expression, ): Expression public fun cmpLocalDateTimeEarlierOrSimultaneous( left: Expression, right: Expression, ): Expression public fun cmpLocalDateTimeLater( left: Expression, right: Expression, ): Expression public fun cmpLocalDateTimeLaterOrSimultaneous( left: Expression, right: Expression, ): Expression public fun cmpInstantEarlier( left: Expression, right: Expression, ): Expression public fun cmpInstantEarlierOrSimultaneous( left: Expression, right: Expression, ): Expression public fun cmpInstantLater( left: Expression, right: Expression, ): Expression public fun cmpInstantLaterOrSimultaneous( left: Expression, right: Expression, ): Expression public fun dateComponentOf( dt: Expression, ): Expression public fun timeComponentOf( dt: Expression, ): Expression public fun joinDateTime( date: Expression, time: Expression, ): Expression public fun constantOf(v: String): Expression public fun constantOf(v: Boolean): Expression public fun constantOf(v: Byte): Expression public fun constantOf(v: UByte): Expression public fun constantOf(v: Short): Expression public fun constantOf(v: UShort): Expression public fun constantOf(v: Int): Expression public fun constantOf(v: UInt): Expression public fun constantOf(v: Long): Expression public fun constantOf(v: ULong): Expression public fun constantOf(v: Float): Expression public fun constantOf(v: Double): Expression public fun constantOf(v: LocalDate): 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 } }