Organizing subpackages in DDL

This commit is contained in:
Andrew Golovashevich 2025-01-03 00:26:18 +03:00
parent b10c97801b
commit b13e6bf470
26 changed files with 67 additions and 57 deletions

View File

@ -4,7 +4,7 @@ import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.LocalTime
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
public interface Expression<RuntimeType, DatabaseType : ColumnType<RuntimeType>, OwnerBuilderUserExtension : Any> {
public interface Builder<OwnerBuilderUserExtension : Any> {

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.module
import kotlin.jvm.JvmName
import ru.landgrafhomyak.serdha.api.v0.runtime.SynchronizedDatabase

View File

@ -1,5 +1,8 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.module
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
import ru.landgrafhomyak.serdha.api.v0.ddl.table.TableCreator
import ru.landgrafhomyak.serdha.api.v0.ddl.table.TableUpdater
import ru.landgrafhomyak.serdha.api.v0.dml.Delete
import ru.landgrafhomyak.serdha.api.v0.dml.DeleteCreator
import ru.landgrafhomyak.serdha.api.v0.dml.Insert

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.module
import ru.landgrafhomyak.serdha.api.v0.runtime.Transaction

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.module
public interface Namespace {
@Suppress("SpellCheckingInspection")

View File

@ -1,7 +1,8 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import kotlin.jvm.JvmName
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
/**
* Descriptor of 'check' constraint on columns. Used for schema manipulations.

View File

@ -1,6 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import kotlin.jvm.JvmName
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
import ru.landgrafhomyak.serdha.api.v0.dml.SelectedTable
/**

View File

@ -1,7 +1,8 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import kotlin.jvm.JvmName
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
/**
* Descriptor of default value attached to [column][Column]. Used for schema manipulations.

View File

@ -1,7 +1,8 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import kotlin.jvm.JvmName
import kotlin.jvm.JvmStatic
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.types.RowId
/**
* Descriptor of a reference to row in another table (== foreign key to `INTEGER PRIMARY KEY AUTOINCREMENT`). Used for schema manipulations.

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import kotlin.jvm.JvmName

View File

@ -1,4 +1,6 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import ru.landgrafhomyak.serdha.api.v0.ddl.module.Module
public interface Table<UserExtension : Any, PreviousUserExtension : Any> {
public val userExtension: UserExtension

View File

@ -1,6 +1,8 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.types.RowId
public interface TableCreator<TableUserExtension : Any> {
public val expressionBuilder: Expression.Builder<TableUserExtension>

View File

@ -1,6 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
public interface TableUpdater<TableNewUserExtension : Any, TableOldUserExtension : Any> : TableCreator<TableNewUserExtension> {

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.table
public interface UniqueIndex<OwnerTableUserExtension : Any> : Index<OwnerTableUserExtension> {
public val areNullsDistinct: Boolean

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.types
import kotlin.jvm.JvmField
import kotlin.jvm.JvmName
@ -6,6 +6,7 @@ import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.LocalTime
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
/**
* Descriptor of a database type.
@ -40,117 +41,117 @@ public interface ColumnType<@Suppress("unused") RuntimeType> {
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("BOOLEAN")
public val BOOLEAN: ColumnType.BOOLEAN
public val BOOLEAN: BOOLEAN
/**
* Descriptor of a signed integer type with size at least 8 bits. Can contain values in range `-128..127`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_S8")
public val INT_S8: ColumnType.INT_S8
public val INT_S8: INT_S8
/**
* Descriptor of an unsigned integer type with size at least 8 bits. Can contain values in range `0..255`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_U8")
public val INT_U8: ColumnType.INT_U8
public val INT_U8: INT_U8
/**
* Descriptor of a signed integer type with size at least 16 bits. Can contain values in range `-32768..32767`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_S16")
public val INT_S16: ColumnType.INT_S16
public val INT_S16: INT_S16
/**
* Descriptor of an unsigned integer type with size at least 16 bits. Can contain values in range `0..65535`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_U16")
public val INT_U16: ColumnType.INT_U16
public val INT_U16: INT_U16
/**
* Descriptor of a signed integer type with size at least 32 bits. Can contain values in range `-2147483648..2147483647`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_S32")
public val INT_S32: ColumnType.INT_S32
public val INT_S32: INT_S32
/**
* Descriptor of an unsigned integer type with size at least 32 bits. Can contain values in range `0..4294967295`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_U32")
public val INT_U32: ColumnType.INT_U32
public val INT_U32: INT_U32
/**
* Descriptor of a signed integer type with size at least 64 bits. Can contain values in range `-9223372036854775808..9223372036854775807`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_S64")
public val INT_S64: ColumnType.INT_S64
public val INT_S64: INT_S64
/**
* Descriptor of an unsigned integer type with size at least 64 bits. Can contain values in range `0..18446744073709551615`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INT_U64")
public val INT_U64: ColumnType.INT_U64
public val INT_U64: INT_U64
/**
* Descriptor of a local date type in some format like `(year, month, day)`. Day component can contain values in `1..31`, month in `1..12` and year in `-32768..32767`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("LOCAL_DATE")
public val LOCAL_DATE: ColumnType.LOCAL_DATE
public val LOCAL_DATE: LOCAL_DATE
/**
* Descriptor of a local time type in some format like `(hour, minute, second)`. Hour component can contain values in `0..23`, minute in `0..59` and second in `0..59`.
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("LOCAL_TIME")
public val LOCAL_TIME: ColumnType.LOCAL_TIME
public val LOCAL_TIME: LOCAL_TIME
/**
* Descriptor of union of types [LOCAL_DATE][ColumnType.Builder.LOCAL_DATE] and [LOCAL_TIME][ColumnType.Builder.LOCAL_TIME].
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("LOCAL_DATETIME")
public val LOCAL_DATETIME: ColumnType.LOCAL_DATETIME
public val LOCAL_DATETIME: LOCAL_DATETIME
/**
* Descriptor of a timestamp type. Can contain values in `-9223372036854775808..9223372036854775807`
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("INSTANT")
public val INSTANT: ColumnType.INSTANT
public val INSTANT: INSTANT
/**
* Descriptor of a single-precision floating-point number with size at least 32 bits. See [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754).
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("FLOAT_32")
public val FLOAT_32: ColumnType.FLOAT_32
public val FLOAT_32: FLOAT_32
/**
* Descriptor of a double-precision floating-point number with size at least 64 bits. See [IEEE 754](https://en.wikipedia.org/wiki/IEEE_754).
*/
@Suppress("INAPPLICABLE_JVM_NAME")
@get:JvmName("FLOAT_64")
public val FLOAT_64: ColumnType.FLOAT_64
public val FLOAT_64: FLOAT_64
//todo
public val STRING: ColumnType.STRING
public val STRING: STRING
//todo
public fun STRING(size: UInt): ColumnType.STRING
public fun STRING(size: UInt): STRING
//todo
public val BYTE_ARRAY: ColumnType.BYTE_ARRAY
public val BYTE_ARRAY: BYTE_ARRAY
//todo
public fun BYTE_ARRAY(size: UInt): ColumnType.BYTE_ARRAY
public fun BYTE_ARRAY(size: UInt): BYTE_ARRAY
/**

View File

@ -1,4 +1,4 @@
package ru.landgrafhomyak.serdha.api.v0.ddl
package ru.landgrafhomyak.serdha.api.v0.ddl.types
public interface RowId<@Suppress("unused") OwnerTableUserExtension: Any>

View File

@ -1,7 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
public interface DeleteCreator<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension> {
public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>

View File

@ -1,7 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
public interface InputParam<RuntimeType, DatabaseType : ColumnType<RuntimeType>, OwnerQueryUserExtension : Any> : Expression<RuntimeType, DatabaseType, OwnerQueryUserExtension> {
public val name: String

View File

@ -1,9 +1,9 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.UniqueIndex
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.table.UniqueIndex
public interface InsertCreator<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension> {
public val insertedValues: SelectedTable<TargetTableUserExtension, QueryUserExtension>

View File

@ -1,9 +1,7 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.Table
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
public interface SelectCreator<QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension>, _CommonQueryMethods._Returning<QueryUserExtension>{
public fun where(expression: Expression<Boolean, ColumnType.BOOLEAN, QueryUserExtension>)

View File

@ -1,8 +1,8 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
public interface SelectedTable<SelectedTableUserExtension : Any, QueryUserExtension : Any> {
public fun <RuntimeType, DatabaseType : ColumnType<RuntimeType>> selectColumn(column: Column<RuntimeType, DatabaseType, SelectedTableUserExtension>): Expression<RuntimeType, DatabaseType, QueryUserExtension>

View File

@ -1,9 +1,8 @@
package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.Table
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
public interface UpdateCreator<TargetTableUserExtension : Any, QueryUserExtension : Any> : _CommonQueryMethods<QueryUserExtension> {
public val targetTable: SelectedTable<TargetTableUserExtension, QueryUserExtension>

View File

@ -2,9 +2,9 @@ package ru.landgrafhomyak.serdha.api.v0.dml
import ru.landgrafhomyak.serdha.api.v0.Expression
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.Table
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.types.ColumnType
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
import ru.landgrafhomyak.serdha.api.v0.runtime.ParametersSetter
import ru.landgrafhomyak.serdha.api.v0.runtime._ParametersSetter

View File

@ -1,6 +1,6 @@
package ru.landgrafhomyak.serdha.api.v0.runtime
import ru.landgrafhomyak.serdha.api.v0.ddl.Column
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Column
public interface Row<QueryUserExtension : Any> {
public operator fun <RuntimeType> get(c: Column<RuntimeType, *, QueryUserExtension>): RuntimeType

View File

@ -1,9 +1,9 @@
package ru.landgrafhomyak.serdha.api.v0.runtime
import ru.landgrafhomyak.serdha.api.v0.LowLevelApi
import ru.landgrafhomyak.serdha.api.v0.ddl.Module
import ru.landgrafhomyak.serdha.api.v0.ddl.RowId
import ru.landgrafhomyak.serdha.api.v0.ddl.Table
import ru.landgrafhomyak.serdha.api.v0.ddl.module.Module
import ru.landgrafhomyak.serdha.api.v0.ddl.types.RowId
import ru.landgrafhomyak.serdha.api.v0.ddl.table.Table
import ru.landgrafhomyak.serdha.api.v0.dml.Delete
import ru.landgrafhomyak.serdha.api.v0.dml.Insert
import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator

View File

@ -1,6 +1,6 @@
package ru.landgrafhomyak.serdha.api.v0.runtime
import ru.landgrafhomyak.serdha.api.v0.ddl.ModuleTemplate
import ru.landgrafhomyak.serdha.api.v0.ddl.module.ModuleTemplate
@Suppress("SpellCheckingInspection")
public interface UnsynchronizedDatabase {