From 6f5a21e621e8f198f82f0a2eac3aa51f240c9c4a Mon Sep 17 00:00:00 2001 From: Andrew Golovashevich Date: Mon, 12 May 2025 10:27:21 +0300 Subject: [PATCH] Reflection to check supported by driver api versions --- .../db/skeleton1/api/ApiVersion.kt | 24 +++++++++++++++++++ .../db/skeleton1/api/DriverMetainfo.kt | 1 + 2 files changed, 25 insertions(+) create mode 100644 src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ApiVersion.kt diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ApiVersion.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ApiVersion.kt new file mode 100644 index 0000000..f639509 --- /dev/null +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/ApiVersion.kt @@ -0,0 +1,24 @@ +package ru.landgrafhomyak.db.skeleton1.api + +import kotlin.jvm.JvmField + +public abstract class ApiVersion private constructor(public val str: String) { + override fun equals(other: Any?): Boolean { + if (other == null) return false + if (other !is ApiVersion) return false + return this === other + } + + override fun toString(): String = "" + + override fun hashCode(): Int = this.str.hashCode() + + public abstract fun isImplements(lower: ApiVersion): Boolean + + public companion object { + @JvmField + public val V_0_0: ApiVersion = object : ApiVersion("0.0") { + override fun isImplements(lower: ApiVersion) = this === lower + } + } +} \ No newline at end of file diff --git a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/DriverMetainfo.kt b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/DriverMetainfo.kt index edce1b4..f596c46 100644 --- a/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/DriverMetainfo.kt +++ b/src/commonMain/kotlin/ru/landgrafhomyak/db/skeleton1/api/DriverMetainfo.kt @@ -14,4 +14,5 @@ public interface DriverMetainfo< @Suppress("unused") STATEMENT_CONSTRUCTOR__PARAMS_2_TABLE : RawStatement.Params2Table.Constructor<*>, @Suppress("unused") OBJECT_OPERATIONS : ObjectOperations<*> > { + public val apiVersion: ApiVersion } \ No newline at end of file