diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt index c6658d4..3d2881b 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Column.kt @@ -1,17 +1,18 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.misc import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table -public interface Column, tUE : Any> { +public interface Column { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("name") public val name: String @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("type") - public val type: DT + public val type: DatabaseType @Suppress("INAPPLICABLE_JVM_NAME", "PropertyName") @get:JvmName("_getOwner") - public val _owner: _Selectable + public val _owner: Table } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/DatabaseType.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/DatabaseType.kt index d5c3ce8..751a3d1 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/DatabaseType.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/DatabaseType.kt @@ -1,29 +1,4 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.misc -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectResolver -public interface DatabaseType { - public val nullable: DatabaseType - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getName") - public val name: String - - - public interface DefaultTypes { - @Suppress("INAPPLICABLE_JVM_NAME", "PropertyName") - @get:JvmName("BOOLEAN") - public val BOOLEAN: DatabaseType - - @OptIn(ExperimentalUnsignedTypes::class) - @Suppress("INAPPLICABLE_JVM_NAME", "PropertyName") - @get:JvmName("BINARY_DATA") - public val BINARY_DATA: DatabaseType - - @OptIn(ExperimentalUnsignedTypes::class) - public fun BINARY_DATA(size: UInt, isFixedSize: Boolean): DatabaseType - - public fun custom(resolver: DialectResolver.Type): DatabaseType - } -} +public interface DatabaseType diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/FiltersScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/FiltersScope.kt deleted file mode 100644 index 85780ac..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/FiltersScope.kt +++ /dev/null @@ -1,24 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.misc - -public interface FiltersScope { - public fun > filterNotNull(nullable: IntermediateColumn, oqUE>): IntermediateColumn - - public fun > filterIsNull(nullable: IntermediateColumn, oqUE>) - - public enum class ComparisonOperator { - EQUALS, - NOT_EQUALS, - LESS, - LESS_OR_EQUALS, - GREATER, - GREATER_OR_EQUALS, - } - - public fun > compareWithParam(column: IntermediateColumn, operator: ComparisonOperator, param: QueryParam) - - public fun > compareWithConstant(column: IntermediateColumn, operator: ComparisonOperator, constant: RT) - - public fun ifTrue(column: IntermediateColumn) - - public fun ifFalse(column: IntermediateColumn) -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/IntermediateColumn.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/IntermediateColumn.kt deleted file mode 100644 index a9dae96..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/IntermediateColumn.kt +++ /dev/null @@ -1,3 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.misc - -public interface IntermediateColumn, OwnerBuilderUserExtension : Any> \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Mapper.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Mapper.kt deleted file mode 100644 index 3c7d96b..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Mapper.kt +++ /dev/null @@ -1,56 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.misc - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.OutputRow - -public interface Mapper { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("uExt") - public val uExt: mUE - - public interface InputColumn, mUE : Any> : Column - public interface OutputColumn, mUE : Any> : QueryParam - - public fun interface InputLinker { - public fun link(linker: Scope) - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("uExt") - public val uExt: mUE - - public operator fun > set(p: InputColumn, e: IntermediateColumn) - } - } - - public fun interface OutputLinker { - public fun link(linker: Scope): oUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("uExt") - public val uExt: mUE - - public operator fun > get(p: OutputColumn): IntermediateColumn - } - } - - public interface Constructor { - public fun createMapper(context: Scope): Action - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - - public fun > input(name: String, type: DT): InputColumn - - public fun > output(name: String, type: DT): OutputColumn - } - } - - public interface Action { - public fun calculate(input: OutputRow, output: InputRow) - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt index 29772b6..7c734d5 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/QueryParam.kt @@ -2,12 +2,8 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.misc import kotlin.jvm.JvmName -public interface QueryParam, oqUE : Any> { +public interface QueryParam { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getName") public val name: String - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getType") - public val type: DT } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Reducer.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Reducer.kt deleted file mode 100644 index 86cd64a..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/Reducer.kt +++ /dev/null @@ -1,52 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.misc - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.OutputRow - -public interface Reducer { - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("uExt") - public val uExt: rUE - - public interface BidirectionalColumn, rUE : Any> : Column, QueryParam - public interface OutputColumn, rUE : Any> : Column, QueryParam - - - public fun interface Linker<_rUE : Any, qUE : Any, oUE : Any> { - public fun link(linker: Scope<_rUE, qUE>): oUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("uExt") - public val uExt: rUE - - public fun > link(red: BidirectionalColumn, src: IntermediateColumn): IntermediateColumn - public fun > linkAndInitialize(red: BidirectionalColumn, src: IntermediateColumn, initial: RT): IntermediateColumn - public fun > linkAndInitialize(red: BidirectionalColumn, src: IntermediateColumn, initial: QueryParam): IntermediateColumn - public fun > link(red: OutputColumn): IntermediateColumn - public fun > linkAndInitialize(red: OutputColumn, initial: RT): IntermediateColumn - public fun > linkAndInitialize(red: OutputColumn, initial: QueryParam): IntermediateColumn - } - } - - public interface Constructor { - public fun createReducer(context: Scope): Action - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider - - public fun > outputColumn(name: String, type: DT): OutputColumn - public fun > outputColumn(name: String, type: DT, defaultInitialValue: RT): OutputColumn - public fun > bidirectionalColumn(name: String, type: DT): BidirectionalColumn - public fun > bidirectionalColumn(name: String, type: DT, defaultInitialValue: RT): BidirectionalColumn - } - } - - public interface Action { - public fun calculate(acc: OutputRow, row: OutputRow, newAcc: InputRow) - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/RowExpression.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/RowExpression.kt deleted file mode 100644 index 8e9fe12..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/RowExpression.kt +++ /dev/null @@ -1,48 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.misc - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Query -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.OutputRow -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.Transaction -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.RowId -import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table - -public interface RowExpression { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getTargetTable") - public val targetTable: Table - - public interface RowExportsConstructor { - public fun createRowExports(context: Scope): rUE - - public interface Scope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("tt") - public val tt: Table - - public fun > selectFromTargetTable(column: Column): Column - - public fun > followReference( - ref: Column<*, *, rUE>, - column: Column - ): Column - - public fun > followReferenceNullable( - ref: Column, DatabaseType.ROW_ID, rUE>, - column: Column - ): Column, rUE> - } - } - - public interface Constructor { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rowExports") - public val rowExports: RowExportsConstructor - - public fun createRowExpression(internalQueries: _Query.Constructor._SelectsScope, runtimeQueries: _Query.Constructor._SelectsScope): Action - } - - public interface Action { - public suspend fun calculateRow(rowUE: rUE, row: OutputRow, transaction: Transaction): R - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/_Selectable.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/_Selectable.kt deleted file mode 100644 index f3cbfaa..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/misc/_Selectable.kt +++ /dev/null @@ -1,28 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.misc - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries.SelectQuery -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries.InsertQuery -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries.UpdateQuery -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries.DeleteQuery - - -/** - * Utility interface to mark queries (and table) that can be used as the source for other queries. - * - * @param UE Type of extension provided by user ([about user extensions](https://git.landgrafhomyak.ru/SERDHA/serdha-0-api.kt/wiki/User-extensions)). - * - * @see SelectQuery - * @see InsertQuery.FromSubquery.Constructor.selector - * @see UpdateQuery.FromSubquery.Constructor.selector - * @see DeleteQuery.FromSubquery.Constructor.selector - */ -@Suppress("ClassName") -public interface _Selectable { - /** - * Getter of an extension provided by user ([about user extensions](https://git.landgrafhomyak.ru/SERDHA/serdha-0-api.kt/wiki/User-extensions)). - */ - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("uExt") - public val uExt: UE -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt index 8e15fdc..74210bc 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/CreateModuleScope.kt @@ -1,29 +1,34 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.module import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.LowLevelApi import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Query -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.Executor -import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.Transaction +import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Statement +import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectResolver +import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow import ru.landgrafhomyak.db.sql_skeleton_0.api.table.TableConstructor +import ru.landgrafhomyak.db.sql_skeleton_0.api.table.TableScopedObject -public interface CreateModuleScope { +public interface CreateModuleScope { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("rootNs") - public val rootNs: Namespace + public val rootNs: Namespace - public fun createTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor): Table + public fun createTable( + lifeTime: Table.LifeTime = Table.LifeTime.DATABASE_SCOPE, + namespace: Namespace = this.rootNs, + name: String, initializer: TableConstructor + ): Table - public fun createSessionScopeTemporaryTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor): Table + public fun moduleScopedObject(namespace: Namespace = this.rootNs, name: String): ModuleScopedObject - public fun createTransactionScopeTemporaryTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor): Table + public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module - public fun createModuleConfiguringScopeTemporaryTable(namespace: Namespace = this.rootNs, name: String, initializer: TableConstructor): Table + public fun namespace(parent: Namespace, name: String): Namespace - public fun createQuery(creator: _Query.Constructor): R + public fun addStatement(stmt: DialectResolver.Statement_Void2Void<*>) - public fun createModuleConfiguringScopeTemporaryQuery(creator: _Query.Constructor): R - - public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module + @LowLevelApi + public fun addStatement(stmt: DialectResolver.Statement_Params2Void): InputRow._Scope } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt index 94cb263..f7d17d6 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Module.kt @@ -1,7 +1,7 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.module import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Query +import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Statement import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.Executor import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table import ru.landgrafhomyak.db.sql_skeleton_0.api.table.TableConstructor @@ -16,7 +16,7 @@ public interface Module { @get:JvmName("getVersionKey") public val versionKey: String - public fun createQuery(c: _Query.Constructor): R + public fun createQuery(c: _Statement.Constructor): R public fun createSessionScopeTemporaryTable(name: String, initializer: TableConstructor): Table diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/ModuleScopedObject.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/ModuleScopedObject.kt new file mode 100644 index 0000000..f6a2742 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/ModuleScopedObject.kt @@ -0,0 +1,8 @@ +package ru.landgrafhomyak.db.sql_skeleton_0.api.module + +import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table + +public interface ModuleScopedObject { + public val module: Module + public val namespace +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt index 95372fb..9140c93 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/Namespace.kt @@ -2,10 +2,7 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.module import kotlin.jvm.JvmName -public interface Namespace { - @Suppress("SpellCheckingInspection") - public fun subnamespace(name: String): Namespace - +public interface Namespace { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getName") public val name: String diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt index ed62d4c..6dfb1f9 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/module/UpgradeModuleScope.kt @@ -1,46 +1,63 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.module -import kotlin.jvm.JvmName import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table import ru.landgrafhomyak.db.sql_skeleton_0.api.table.TableConstructor +import ru.landgrafhomyak.db.sql_skeleton_0.api.table.TableUpgrade -public interface UpgradeModuleScope : CreateModuleScope { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("oldModule") - public val oldModule: omUE +public interface UpgradeModuleScope : CreateModuleScope { + public fun keepTable(table: Table): Table - public interface TableUpgrade { - public fun upgradeTable(oldTable: Table, upgrade: TableUpgrade): tnUE - } + public fun keepAndRenameTable(table: Table, newName: String): Table + public fun keepAndRenameTable(table: Table, newNamespace: Namespace): Table - public fun keepTable( - table: Table, - ): Table + public fun keepAndRenameTable(table: Table, newNamespace: Namespace, newName: String): Table - public fun renameTable( - table: Table, - newNamespace: Namespace? = null, - newName: String? = null - ): Table + public fun upgradeTable(oldTable: Table, upgrade: TableUpgrade): Table - public fun upgradeTable( - oldTable: Table, - upgrade: TableUpgrade - ): Table + public fun upgradeAndRenameTable( + table: Table, + newName: String, + upgrade: TableUpgrade + ): Table + public fun upgradeAndRenameTable( + table: Table, + newNamespace: Namespace, + upgrade: TableUpgrade + ): Table - public fun upgradeAndRenameTable( - oldTable: Table, - newNamespace: Namespace? = null, - newName: String? = null, - upgrade: TableUpgrade - ): Table + public fun upgradeAndRenameTable( + table: Table, + newNamespace: Namespace, + upgrade: TableUpgrade, + newName: String + ): Table - public fun deleteTable(table: Table<*, *>) + public fun deleteTable(table: Table<*, omUE, RUNTIME_KEY>) - public fun deleteTableAfterModuleUpgraded(table: Table<*, *>) + public fun deleteTableAfterModuleUpgraded(table: Table): Table - public fun upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate): Module + public fun exportTable(table: Table<*, omUE, RUNTIME_KEY>) + + public fun importTable( + namespace: Namespace = this.rootNs, name: String, + table: Table + ): Table + + public fun importAndUpgradeTable( + namespace: Namespace = this.rootNs, name: String, + table: Table, + upgrade: TableUpgrade + ): Table + + public fun keepModule(module: Module): Module + public fun keepAndMoveModule(oldModule: Module, newNs: Namespace): Module + + public fun upgradeModule(oldModule: Module<*>, template: ModuleTemplate): Module + public fun upgradeAndMoveModule(oldModule: Module<*>, newNs: Namespace, template: ModuleTemplate): Module + + public fun removeModule(oldModule: Module<*>) + public fun removeModuleAfterUpgrade(oldModule: Module): Module } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt index bc5d86a..70cf1cd 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/RawStatement.kt @@ -1,51 +1,53 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.queries -public interface RawStatement : _Statement { +import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectKey + +public interface RawStatement> : _Statement { public override val uExt: qUE - public interface Void2Void : RawStatement, _Statement.Void2Void { + public interface Void2Void> : RawStatement, _Statement.Void2Void { override val uExt: qUE - public interface Constructor + public interface Constructor } - public interface Void2Row : RawStatement, _Statement.Void2Row { + public interface Void2Row> : RawStatement, _Statement.Void2Row { override val uExt: qUE public interface Constructor } - public interface Void2RowOrNull : RawStatement, _Statement.Void2RowOrNull { + public interface Void2RowOrNull> : RawStatement, _Statement.Void2RowOrNull { override val uExt: qUE public interface Constructor } - public interface Void2Table : RawStatement, _Statement.Void2Table { + public interface Void2Table> : RawStatement, _Statement.Void2Table { override val uExt: qUE public interface Constructor } - public interface Params2Void : RawStatement, _Statement.Params2Void { + public interface Params2Void> : RawStatement, _Statement.Params2Void { override val uExt: qUE public interface Constructor } - public interface Params2Row : RawStatement, _Statement.Params2Row { + public interface Params2Row> : RawStatement, _Statement.Params2Row { override val uExt: qUE public interface Constructor } - public interface Params2RowOrNull : RawStatement, _Statement.Params2RowOrNull { + public interface Params2RowOrNull> : RawStatement, _Statement.Params2RowOrNull { override val uExt: qUE public interface Constructor } - public interface Params2Table : RawStatement, _Statement.Params2Table { + public interface Params2Table> : RawStatement, _Statement.Params2Table { override val uExt: qUE public interface Constructor diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt index 4bc6c58..4ce18b4 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/queries/_Statement.kt @@ -1,20 +1,21 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.queries import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectKey @Suppress("ClassName") -public interface _Statement { +public interface _Statement> { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("uExt") - public val uExt: qUE + public val uExt: STATEMENT_USER_EXTENSION - public interface Void2Void : _Statement - public interface Void2Row : _Statement - public interface Void2RowOrNull : _Statement - public interface Void2Table : _Statement - public interface Params2Void : _Statement - public interface Params2Row : _Statement - public interface Params2RowOrNull : _Statement - public interface Params2Table : _Statement + public interface Void2Void> : _Statement + public interface Void2Row> : _Statement + public interface Void2RowOrNull> : _Statement + public interface Void2Table> : _Statement + public interface Params2Void> : _Statement + public interface Params2Row> : _Statement + public interface Params2RowOrNull> : _Statement + public interface Params2Table> : _Statement } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt index 09077d5..89aa80e 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/raw/DialectResolver.kt @@ -5,115 +5,117 @@ import ru.landgrafhomyak.db.sql_skeleton_0.api.queries.RawStatement public interface DialectResolver { - public fun interface Type { + public fun interface Type : DialectResolver { public fun resolveByDialect_databaseType(selector: Selector) public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey, type: DATABASE_TYPE + public fun > bind( + key: DIALECT, type: DATABASE_TYPE ) where DATABASE_TYPE_UNBOUND : DatabaseType<*>, DATABASE_TYPE : DatabaseType, DATABASE_TYPE : DATABASE_TYPE_UNBOUND } } - public fun interface Statement_Void2Void { + public fun interface Statement_Void2Void { public fun resolveByDialect_statement_void2void(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *, *, *>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Void2Void.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Void2Void.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND } } - public fun interface Statement_Void2Row { + public fun interface Statement_Void2Row { public fun resolveByDialect_statement_void2row(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *, *>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Void2Row.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Void2Row.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND } } - public fun interface Statement_Void2RowOrNull { + public fun interface Statement_Void2RowOrNull { public fun resolveByDialect_statement_void2rowOrNull(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *, *>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Void2RowOrNull.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Void2RowOrNull.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND } } - public fun interface Statement_Void2Table { + + public fun interface Statement_Void2Table { public fun resolveByDialect_statement_void2table(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *, *>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Void2Table.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Void2Table.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND } } - public fun interface Statement_Params2Void { + public fun interface Statement_Params2Void { public fun resolveByDialect_statement_params2void(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *, *>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Params2Void.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Params2Void.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND } } - public fun interface Statement_Params2Row { + public fun interface Statement_Params2Row { public fun resolveByDialect_statement_params2row(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *, *>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Params2Row.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Params2Row.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND } } - public fun interface Statement_Params2RowOrNull { + public fun interface Statement_Params2RowOrNull { public fun resolveByDialect_statement_params2rowOrNull(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, *, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND, *>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Params2RowOrNull.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Params2RowOrNull.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND } } - public fun interface Statement_Params2Table { + + public fun interface Statement_Params2Table { public fun resolveByDialect_statement_params2table(selector: Selector) - public interface Selector { + public interface Selector { @Suppress("BOUNDS_NOT_ALLOWED_IF_BOUNDED_BY_TYPE_PARAMETER") - public fun bind( - key: DialectKey<*, *, *, *, *, *, *, *, STATEMENT_CONSTRUCTOR_UNBOUND>, constructor: STATEMENT_CONSTRUCTOR + public fun > bind( + key: DIALECT, constructor: STATEMENT_CONSTRUCTOR ) where STATEMENT_CONSTRUCTOR_UNBOUND : RawStatement.Params2Table.Constructor<*>, STATEMENT_CONSTRUCTOR : RawStatement.Params2Table.Constructor, STATEMENT_CONSTRUCTOR : STATEMENT_CONSTRUCTOR_UNBOUND diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Executor.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Executor.kt index d5f74e7..3243d42 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Executor.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Executor.kt @@ -1,10 +1,9 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.runtime import ru.landgrafhomyak.db.sql_skeleton_0.api.LowLevelApi -import ru.landgrafhomyak.db.sql_skeleton_0.api.module.Module import ru.landgrafhomyak.db.sql_skeleton_0.api.table.RowId import ru.landgrafhomyak.db.sql_skeleton_0.api.table.Table -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Query +import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Statement public interface Executor { @Suppress("FunctionName") @@ -13,19 +12,19 @@ public interface Executor { @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeAutoTransactedQuery(compiledQuery: _Query.Void2Table): OutputRow._Iterator + public suspend fun _executeAutoTransactedQuery(compiledQuery: _Statement.Void2Table): OutputRow._Iterator @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeAutoTransactedQuery(compiledQuery: _Query.Params2Table): InputRow._Scope> + public suspend fun _executeAutoTransactedQuery(compiledQuery: _Statement.Params2Table): InputRow._Scope> @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeAutoTransactedQuery(compiledQuery: _Query.Table2Void): InputRow._Iterator + public suspend fun _executeAutoTransactedQuery(compiledQuery: _Statement.Table2Void): InputRow._Iterator @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeAutoTransactedQuery(compiledQuery: _Query.Params2Void): InputRow._Scope + public suspend fun _executeAutoTransactedQuery(compiledQuery: _Statement.Params2Void): InputRow._Scope public fun mapOfRowIds( table: Table, diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/InputRow.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/InputRow.kt index f35cf09..43d94fa 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/InputRow.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/InputRow.kt @@ -2,7 +2,6 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.runtime import kotlin.jvm.JvmName import ru.landgrafhomyak.db.sql_skeleton_0.api.LowLevelApi -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.QueryParam public interface InputRow { @@ -10,21 +9,21 @@ public interface InputRow { @get:JvmName("uExt") public val uExt: qUE - public operator fun set(c: QueryParam, value: RuntimeType) + public operator fun set(c: QueryParam, value: RuntimeType) - public operator fun set(c: QueryParam, value: Byte): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: UByte): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: Short): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: UShort): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: Int): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: UInt): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: Long): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: ULong): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: Char): Unit = this.set(c, value) - public operator fun set(c: QueryParam, value: Boolean): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Byte): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: UByte): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Short): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: UShort): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Int): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: UInt): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Long): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: ULong): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Char): Unit = this.set(c, value) + public operator fun set(c: QueryParam, value: Boolean): Unit = this.set(c, value) public interface WithRedirect : InputRow { - public fun > redirect(c: QueryParam, value: QueryParam) + public fun redirect(c: QueryParam, value: QueryParam) } @Suppress("ClassName") diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/OutputRow.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/OutputRow.kt index a0437fd..e792bb0 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/OutputRow.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/OutputRow.kt @@ -9,18 +9,18 @@ public interface OutputRow { @get:JvmName("uExt") public val uExt: qUE - public operator fun get(c: Column): RuntimeType + public operator fun get(c: Column): RuntimeType - public operator fun get(c: Column): Byte = this.get(c) - public operator fun get(c: Column): UByte = this.get(c) - public operator fun get(c: Column): Short = this.get(c) - public operator fun get(c: Column): UShort = this.get(c) - public operator fun get(c: Column): Int = this.get(c) - public operator fun get(c: Column): UInt = this.get(c) - public operator fun get(c: Column): Long = this.get(c) - public operator fun get(c: Column): ULong = this.get(c) - public operator fun get(c: Column): Char = this.get(c) - public operator fun get(c: Column): Boolean = this.get(c) + public operator fun get(c: Column): Byte = this.get(c) + public operator fun get(c: Column): UByte = this.get(c) + public operator fun get(c: Column): Short = this.get(c) + public operator fun get(c: Column): UShort = this.get(c) + public operator fun get(c: Column): Int = this.get(c) + public operator fun get(c: Column): UInt = this.get(c) + public operator fun get(c: Column): Long = this.get(c) + public operator fun get(c: Column): ULong = this.get(c) + public operator fun get(c: Column): Char = this.get(c) + public operator fun get(c: Column): Boolean = this.get(c) @Suppress("ClassName") @LowLevelApi diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Transaction.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Transaction.kt index 7777caa..93fadeb 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Transaction.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/runtime/Transaction.kt @@ -1,24 +1,24 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.runtime import ru.landgrafhomyak.db.sql_skeleton_0.api.LowLevelApi -import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Query +import ru.landgrafhomyak.db.sql_skeleton_0.api.queries._Statement public interface Transaction { @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeQuery(compiledQuery: _Query.Void2Table): OutputRow._Iterator + public suspend fun _executeQuery(compiledQuery: _Statement.Void2Table): OutputRow._Iterator @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeQuery(compiledQuery: _Query.Params2Table): InputRow._Scope> + public suspend fun _executeQuery(compiledQuery: _Statement.Params2Table): InputRow._Scope> @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeQuery(compiledQuery: _Query.Table2Void): InputRow._Iterator + public suspend fun _executeQuery(compiledQuery: _Statement.Table2Void): InputRow._Iterator @Suppress("FunctionName") @LowLevelApi - public suspend fun _executeQuery(compiledQuery: _Query.Params2Void): InputRow._Scope + public suspend fun _executeQuery(compiledQuery: _Statement.Params2Void): InputRow._Scope public suspend fun rollback() diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/CheckConstraint.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/CheckConstraint.kt deleted file mode 100644 index dc6bc5a..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/CheckConstraint.kt +++ /dev/null @@ -1,10 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.table - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.RowExpression - -public interface CheckConstraint : RowExpression { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getName") - public val name: String -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/ColumnDefaultValue.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/ColumnDefaultValue.kt deleted file mode 100644 index 62c1b1d..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/ColumnDefaultValue.kt +++ /dev/null @@ -1,6 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.table - -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.RowExpression - -public interface ColumnDefaultValue : RowExpression { -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/ForeignRowReference.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/ForeignRowReference.kt deleted file mode 100644 index 0869c43..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/ForeignRowReference.kt +++ /dev/null @@ -1,24 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.table - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType - -public interface ForeignRowReference> : Column { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("fromTable") - public val fromTable: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("toTable") - public val toTable: Table - - - public enum class OnDelete { - RESTRICT, - - SET_NULL, - - CASCADE - } -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Index.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Index.kt deleted file mode 100644 index fd15ca7..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Index.kt +++ /dev/null @@ -1,18 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.table - -import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column - -public interface Index { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getName") - public val name: String - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getTable") - public val table: Table - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getColumns") - public val columns: List> -} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/RowId.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/RowId.kt deleted file mode 100644 index 469053b..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/RowId.kt +++ /dev/null @@ -1,4 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.table - - -public interface RowId<@Suppress("unused") OwnerTableUserExtension: Any> \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt index 0af56a6..4bd8b98 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/Table.kt @@ -1,27 +1,29 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.table import kotlin.jvm.JvmName -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc._Selectable import ru.landgrafhomyak.db.sql_skeleton_0.api.module.Module -public interface Table : _Selectable { +public interface Table { @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("uExt") - public override val uExt: UE + public val uExt: UE + @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getName") public val name: String + @Suppress("INAPPLICABLE_JVM_NAME") @get:JvmName("getModule") public val module: Module<*> - public enum class TemporaryType { + public enum class LifeTime { + DATABASE_SCOPE, TRANSACTION_SCOPE, CONNECTION_SCOPE, MODULE_UPGRADE_SCOPE } @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("getTemporaryType") - public val temporaryType: TemporaryType? + @get:JvmName("getLifeTime") + public val lifeTime: LifeTime } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableConstructor.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableConstructor.kt index 04bdf5d..52b4d80 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableConstructor.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableConstructor.kt @@ -1,56 +1,23 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.table -import kotlin.jvm.JvmName +import ru.landgrafhomyak.db.sql_skeleton_0.api.LowLevelApi import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.RowExpression +import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectResolver +import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow -public interface TableConstructor { - public fun createTable(context: Scope): tUE +public interface TableConstructor { + public fun createTable(context: Scope): tUE + public interface Scope { + public fun column(name: String, type: DialectResolver.Type, manualCreate: Boolean = false): Column + public fun columnWithBoundType(name: String, foreign: Column): Column - public interface Scope { + public fun tableScopedObject(name: String): TableScopedObject - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("types") - public val types: DatabaseType.Provider + public fun addAlterStatement(stmt: DialectResolver.Statement_Void2Void<*>) - public fun > column(name: String, type: DT): Column - - public fun index(name: String, vararg columns: Column<*, *, tUE>): Index - - public fun uniqueIndex(name: String, distinctNulls: Boolean, vararg columns: Column<*, *, tUE>): UniqueIndex - public fun checkConstraint(name: String, constructor: RowExpression.Constructor, recheckExistingRows: Boolean = false): CheckConstraint - public fun > defaultValue(c: Column, value: RT): ColumnDefaultValue - public fun > defaultValue(c: Column, creator: RowExpression.Constructor): ColumnDefaultValue - - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("rowIdColumn") - public val rowIdColumn: Column, DatabaseType.ROW_ID, tUE> - - public fun selfRowReference( - columnName: String, - onDelete: ForeignRowReference.OnDelete, - ): ForeignRowReference, DatabaseType.ROW_ID> - - public fun > selfRowReference( - columnName: String, - type: DT, - onDelete: ForeignRowReference.OnDelete, - ): ForeignRowReference - - public fun foreignRowReference( - columnName: String, - toTable: Table, - onDelete: ForeignRowReference.OnDelete, - ): ForeignRowReference, DatabaseType.ROW_ID> - - public fun > foreignRowReference( - columnName: String, - type: DT, - toTable: Table, - onDelete: ForeignRowReference.OnDelete, - ): ForeignRowReference + @LowLevelApi + public fun addAlterStatement(stmt: DialectResolver.Statement_Params2Void): InputRow._Scope } } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableScopedObject.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableScopedObject.kt new file mode 100644 index 0000000..e01bfe1 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableScopedObject.kt @@ -0,0 +1,5 @@ +package ru.landgrafhomyak.db.sql_skeleton_0.api.table + +public interface TableScopedObject { + public val table: Table +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt index 8f988ec..ebac3a4 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/TableUpgrade.kt @@ -1,71 +1,35 @@ package ru.landgrafhomyak.db.sql_skeleton_0.api.table +import ru.landgrafhomyak.db.sql_skeleton_0.api.LowLevelApi import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.Column -import ru.landgrafhomyak.db.sql_skeleton_0.api.misc.DatabaseType +import ru.landgrafhomyak.db.sql_skeleton_0.api.raw.DialectResolver +import ru.landgrafhomyak.db.sql_skeleton_0.api.runtime.InputRow -public interface TableUpgrade { - public fun upgradeTable(context: Scope): tnUE +public interface TableUpgrade { + public fun upgradeTable(oldTable: toUE, context: Scope): tnUE - public interface Scope : TableConstructor.Scope { - public fun > keepColumn(c: Column): Column - public fun > keepColumnUntilUpgraded(c: Column): Column - public fun > renameAndKeepColumn(c: Column, newName: String): Column - public fun deleteColumn(c: Column<*, *, toUE>) + public interface Scope : TableConstructor.Scope { + public fun keepColumn(c: Column): Column + public fun renameColumn(c: Column, newName: String): Column + public fun removeColumn(c: Column<*, toUE, RUNTIME_KEY>) + public fun removeColumnAfterUpgrade(c: Column): Column - public fun keepIndex(i: Index): Index - public fun renameAndKeepIndex(i: Index, newName: String): Index - public fun deleteIndex(i: Index) + public fun keepColumnWithBoundType(c: Column): Column + public fun unbindAndKeepColumnWithBoundType(c: Column): Column + public fun renameColumnWithBoundType(c: Column, newName: String): Column + public fun unbindAndRenameColumnWithBoundType(c: Column, newName: String): Column + public fun removeColumnWithBoundType(c: Column<*, toUE, RUNTIME_KEY>) + public fun removeColumnWithBoundTypeAfterUpgrade(c: Column): Column - public fun keepCheck(i: CheckConstraint): CheckConstraint - public fun renameAndKeepCheck(i: CheckConstraint, newName: String): CheckConstraint - public fun deleteCheck(i: CheckConstraint) + public fun keepTableScopedObject(obj: TableScopedObject): TableScopedObject + public fun renameTableScopedObject(obj: TableScopedObject, newName: String): TableScopedObject + public fun removeTableScopedObject(obj: TableScopedObject): TableScopedObject - public fun keepUniqueIndex(i: UniqueIndex): UniqueIndex - public fun renameAndKeepUniqueIndex(i: UniqueIndex, newName: String): UniqueIndex - public fun deleteUniqueIndex(i: UniqueIndex) - public fun > keepDefaultValue(c: Column, d: ColumnDefaultValue): ColumnDefaultValue - public fun > changeDefaultValue(c: Column, d: ColumnDefaultValue): ColumnDefaultValue - public fun > changeDefaultValue(c: Column, d: RT): ColumnDefaultValue - public fun deleteDefaultValue(i: ColumnDefaultValue) + public fun addAlterStatementAfterUpgrade(stmt: DialectResolver.Statement_Void2Void<*>) - public fun > keepForeignRowReference( - frr: ForeignRowReference, - onDelete: ForeignRowReference.OnDelete? = null - ): ForeignRowReference - - public fun , ttnUE : Any, nRT, nDT : DatabaseType> keepForeignRowReferenceToUpdatedTable( - frr: ForeignRowReference, - updatedType: nDT, - updatedTable: Table, - onDelete: ForeignRowReference.OnDelete? = null - ): ForeignRowReference - - public fun > renameAndKeepForeignRowReference( - frr: ForeignRowReference, - onDelete: ForeignRowReference.OnDelete? = null - ): ForeignRowReference - - public fun , ttnUE : Any, nRT, nDT : DatabaseType> renameAndKeepForeignRowReferenceToUpdatedTable( - frr: ForeignRowReference, - updatedType: nDT, - updatedTable: Table, - onDelete: ForeignRowReference.OnDelete? = null - ): ForeignRowReference - - public fun deleteForeignRowReference(frr: ForeignRowReference) - - public fun > keepForeignRowReferenceUntilUpgraded( - frr: ForeignRowReference, - onDelete: ForeignRowReference.OnDelete? = null - ): ForeignRowReference - - public fun , ttnUE : Any, nRT, nDT : DatabaseType> keepForeignRowReferenceToUpdatedTableUntilUpgraded( - frr: ForeignRowReference, - updatedType: nDT, - updatedTable: Table, - onDelete: ForeignRowReference.OnDelete? = null - ): ForeignRowReference + @LowLevelApi + public fun addAlterStatementAfterUpgrade(stmt: DialectResolver.Statement_Params2Void): InputRow._Scope } } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/UniqueIndex.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/UniqueIndex.kt deleted file mode 100644 index f8fea27..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/sql_skeleton_0/api/table/UniqueIndex.kt +++ /dev/null @@ -1,9 +0,0 @@ -package ru.landgrafhomyak.db.sql_skeleton_0.api.table - -import kotlin.jvm.JvmName - -public interface UniqueIndex : Index { - @Suppress("INAPPLICABLE_JVM_NAME") - @get:JvmName("areNullsDistinct") - public val areNullsDistinct: Boolean -} \ No newline at end of file