From cf5ba5595056ebbcddd379e483596b04be30c875 Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich <landgrafhomyak@gmail.com> Date: Sun, 23 Mar 2025 22:32:11 +0300 Subject: [PATCH] Cleanup classes from JDBC --- .../db/raw_sql_skeleton/Namespace.kt | 24 +++++++++++++++++++ .../db/raw_sql_skeleton/TableName.kt | 7 ++++++ 2 files changed, 31 insertions(+) create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Namespace.kt create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableName.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 new file mode 100644 index 0000000..e50d923 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/Namespace.kt @@ -0,0 +1,24 @@ +package ru.landgrafhomyak.db.raw_sql_skeleton + +public class Namespace( + private val path: Array<String> +) { + private val usedNames = HashSet<String>() + + public fun subNamespace(name: String): Namespace { + if (name in this.usedNames) + throw IllegalArgumentException("Name is already used: $name") + this.usedNames.add(name) + return Namespace(this.path + name) + } + + public fun table(name: String): TableName { + if (name in this.usedNames) + throw IllegalArgumentException("Name is already used: $name") + this.usedNames.add(name) + + return TableName(this.formatTableName(name)) + } + + private fun formatTableName(name: String) = this.path.joinToString(prefix = "::", separator = "::", postfix = "::${name}") +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableName.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableName.kt new file mode 100644 index 0000000..a11abed --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/raw_sql_skeleton/TableName.kt @@ -0,0 +1,7 @@ +package ru.landgrafhomyak.db.raw_sql_skeleton + +public class TableName(private val name: String) { + public val asSqlReference: String = "\"${this.name}\"" + public val asSqlString: String = "\'${this.name}\'" + override fun toString(): String = this.asSqlReference +} \ No newline at end of file