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