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 44ab21f..ce1bd7a 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/Expression.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/Expression.kt @@ -1,20 +1,448 @@ 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.ColumnType public interface Expression, OwnerBuilderUserExtension : Any> { + + public interface Builder { + @Target(AnnotationTarget.FUNCTION) + @Retention(AnnotationRetention.BINARY) + @RequiresOptIn + public annotation class DynamicTyping + public fun > equals( - left: Expression, - right: Expression, + 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 } } \ No newline at end of file