diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Module.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Module.kt new file mode 100644 index 0000000..07164c6 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Module.kt @@ -0,0 +1,7 @@ +package ru.landgrafhomyak.serdha.api.v0.ddl + +public interface Module { + public val wrapper: W + + public val versionKey: String +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt new file mode 100644 index 0000000..4d4bccb --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleModifyingRound.kt @@ -0,0 +1,52 @@ +package ru.landgrafhomyak.serdha.api.v0.ddl + +import ru.landgrafhomyak.serdha.api.v0.dml.Insert +import ru.landgrafhomyak.serdha.api.v0.dml.InsertCreator +import ru.landgrafhomyak.serdha.api.v0.dml.Select +import ru.landgrafhomyak.serdha.api.v0.dml.SelectCreator +import ru.landgrafhomyak.serdha.api.v0.dml.Update +import ru.landgrafhomyak.serdha.api.v0.dml.UpdateCreator + +public interface ModuleModifyingRound { + public fun createTable( + namespace: Namespace, + name: String, + initializer: (TableCreator) -> TableUserWrapper + ): Table + + public fun updateTable( + oldTable: Table, + initializer: (TableUpdater) -> TableNewUserWrapper + ): Table + + public fun renameTable( + table: Table, + newName: String + ): Table + + public fun renameTable( + table: Table, + newNamespace: Namespace, + newName: String + ): Table + + public fun updateAndRenameTable( + table: Table, + newName: String, + initializer: (TableUpdater) -> TableNewUserWrapper + ): Table + + public fun updateAndRenameTable( + table: Table, + newNamespace: Namespace, + newName: String, + initializer: (TableUpdater) -> TableNewUserWrapper + ): Table + + public fun createSelect(initializer: (SelectCreator) -> QueryUserWrapper): Select + public fun createInsert(table: Table, initializer: (InsertCreator) -> QueryUserWrapper): Insert + public fun createUpdate(table: Table, initializer: (UpdateCreator) -> QueryUserWrapper): Update + + public fun substituteModule(rootNs: Namespace, template: ModuleTemplate): Module + public fun upgradeModule(oldModule: Module<*>, rootNs: Namespace, template: ModuleTemplate): Module +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleTemplate.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleTemplate.kt new file mode 100644 index 0000000..cba1ba6 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/ModuleTemplate.kt @@ -0,0 +1,10 @@ +package ru.landgrafhomyak.serdha.api.v0.ddl + +public interface ModuleTemplate { + public fun modify( + newVersionKey: String, + updater: (oldModule: ModuleTemplate, rootNs: Namespace, updater: ModuleModifyingRound) -> NW + ): ModuleTemplate + + public val versionKey: String +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Namespace.kt b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Namespace.kt new file mode 100644 index 0000000..af5011f --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/serdha/api/v0/ddl/Namespace.kt @@ -0,0 +1,10 @@ +package ru.landgrafhomyak.serdha.api.v0.ddl + +public interface Namespace { + @Suppress("SpellCheckingInspection") + public fun subnamespace(name: String): Namespace + + public val name: String + + public val path: List +} \ No newline at end of file