From 9d2c04a2ad19489ca635939bcf7e8c1312c78189 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Mon, 24 Mar 2025 07:28:23 +0300 Subject: [PATCH] TableConstructor moved into Table --- .../db/raw_sql_skeleton/Namespace.kt | 10 +++--- .../db/raw_sql_skeleton/Table.kt | 29 +++++++++++++++++ .../db/raw_sql_skeleton/TableConstructor.kt | 31 ------------------- 3 files changed, 34 insertions(+), 36 deletions(-) delete mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableConstructor.kt diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Namespace.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Namespace.kt index 31a82e8..6d4b72c 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Namespace.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Namespace.kt @@ -22,18 +22,18 @@ public class Namespace( return Table(this, this._formatTableName(this._allocName(name))) } - public fun table(name: String, constructor: TableConstructor): tUE { + public fun table(name: String, constructor: Table.Constructor): tUE { val table = this.table(name) - return constructor.createTable(table, TableConstructor.Scope(table)) + return constructor.createTable(table, Table.Constructor.Scope(table)) } - public fun table(name: String, constructor: (table: Table, members: TableConstructor.Scope) -> tUE): tUE = + public fun table(name: String, constructor: (table: Table, members: Table.Constructor.Scope) -> tUE): tUE = this.table(name, DefaultTableConstructorWrapper(constructor)) public val path: List = this._path.asList() - private class DefaultTableConstructorWrapper(private val fn: (table: Table, members: TableConstructor.Scope) -> tUE) : TableConstructor { - override fun createTable(table: Table, members: TableConstructor.Scope): tUE = this.fn(table, members) + private class DefaultTableConstructorWrapper(private val fn: (table: Table, members: Table.Constructor.Scope) -> tUE) : Table.Constructor { + override fun createTable(table: Table, members: Table.Constructor.Scope): tUE = this.fn(table, members) } public companion object { diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Table.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Table.kt index cc387c8..0fb6ab8 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Table.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Table.kt @@ -8,4 +8,33 @@ public class Table( public val asSqlString: String = "\'${this.name}\'" override fun toString(): String = this.asSqlReference + + public interface Constructor { + public fun createTable(table: Table, members: Scope): TableUserExtension + + public class Scope internal constructor(private val _table: Table) { + private val _usedNames = HashSet() + + private fun _allocName(name: String): String { + if (!this._usedNames.add(name)) + throw IllegalArgumentException("Name duplication: $name") + return name + } + + public fun column(name: String, type: String): Column = + Column(this._table, this._allocName(name), type) + + public fun column(name: String, referenceType: String, declarationType: String): Column = + Column(this._table, this._allocName(name), referenceType, declarationType) + + public fun index(name: String): NamedTableMember = + NamedTableMember(this._table, this._allocName(name)) + + public fun uniqueIndex(name: String): NamedTableMember = + NamedTableMember(this._table, this._allocName(name)) + + public fun checkConstraint(name: String): NamedTableMember = + NamedTableMember(this._table, this._allocName(name)) + } + } } \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableConstructor.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableConstructor.kt deleted file mode 100644 index fd08127..0000000 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableConstructor.kt +++ /dev/null @@ -1,31 +0,0 @@ -package ru.landgrafhomyak.db.raw_sql_skeleton - - -public interface TableConstructor { - public fun createTable(table: Table, members: Scope): TableUserExtension - - public class Scope internal constructor(private val _table: Table) { - private val _usedNames = HashSet() - - private fun _allocName(name: String): String { - if (!this._usedNames.add(name)) - throw IllegalArgumentException("Name duplication: $name") - return name - } - - public fun column(name: String, type: String): Column = - Column(this._table, this._allocName(name), type) - - public fun column(name: String, referenceType: String, declarationType: String): Column = - Column(this._table, this._allocName(name), referenceType, declarationType) - - public fun index(name: String): NamedTableMember = - NamedTableMember(this._table, this._allocName(name)) - - public fun uniqueIndex(name: String): NamedTableMember = - NamedTableMember(this._table, this._allocName(name)) - - public fun checkConstraint(name: String): NamedTableMember = - NamedTableMember(this._table, this._allocName(name)) - } -} \ No newline at end of file