diff --git a/build.gradle.kts b/build.gradle.kts index 06b3bb4..b49c786 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,7 +17,7 @@ ext["excludeTest"] = { project: Project, tasks: TaskContainer -> plugins { - kotlin("jvm") version "1.4.31" + kotlin("jvm") version "1.4.32" `maven-publish` } diff --git a/settings.gradle.kts b/settings.gradle.kts index 3cca404..fc338bc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -18,6 +18,7 @@ include("ts-socket") include("ts-web") include("ts-web:ts-web-netty") include("ts-web:ts-web-coroutine") +include("ts-database") //include("web", "aop", "database", "utils", "utils:xml", "utils:async-http", "web:netty-web") //include("socket", "socket:socket-async") //include("AsyncSocket") diff --git a/ts-core/build.gradle.kts b/ts-core/build.gradle.kts index 53a3b36..4a36a85 100644 --- a/ts-core/build.gradle.kts +++ b/ts-core/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } dependencies { - implementation(project(":")) + api(project(":")) compileOnly(group = "com.google.code.gson", name = "gson", version = "2.8.6") compileOnly(group = "io.netty", name = "netty-all", version = "4.1.43.Final") } diff --git a/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts b/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts index 4602613..1b0fb84 100644 --- a/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts +++ b/ts-core/ts-coroutine/ts-coroutine-lock/build.gradle.kts @@ -5,6 +5,7 @@ plugins { dependencies { implementation(project(":ts-core")) + api("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.2") } @kotlin.Suppress("UNCHECKED_CAST") diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorDelegateProvider.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorDelegateProvider.kt similarity index 89% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorDelegateProvider.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorDelegateProvider.kt index aebbc6c..9e8db36 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorDelegateProvider.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorDelegateProvider.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorDelegatedField.kt similarity index 73% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorDelegatedField.kt index e007cae..94167d9 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation interface DecoratorDelegatedField<in T, out V> { val delegatedField: DelegatedField<T, V> diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorMutableDelegateProvider.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorMutableDelegateProvider.kt similarity index 91% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorMutableDelegateProvider.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorMutableDelegateProvider.kt index d0c44ea..2c6011d 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorMutableDelegateProvider.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorMutableDelegateProvider.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorMutableDelegatedField.kt similarity index 86% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorMutableDelegatedField.kt index 0bb2f9f..3b5ca37 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DecoratorMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DecoratorMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation interface DecoratorMutableDelegatedField<in T, V> : DecoratorDelegatedField<T, V> { val mutableDelegatedField: MutableDelegatedField<T, V> diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegateProvider.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegateProvider.kt similarity index 80% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegateProvider.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegateProvider.kt index d737a49..945e0db 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegateProvider.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegateProvider.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegatedField.kt similarity index 97% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegatedField.kt index c59cf69..b736d6e 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegatedFieldAttachmentKey.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegatedFieldAttachmentKey.kt similarity index 54% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegatedFieldAttachmentKey.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegatedFieldAttachmentKey.kt index 1f26256..f843077 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/DelegatedFieldAttachmentKey.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/DelegatedFieldAttachmentKey.kt @@ -1,3 +1,3 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation interface DelegatedFieldAttachmentKey<V> \ No newline at end of file diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ExecutorMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ExecutorMutableDelegatedField.kt similarity index 95% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ExecutorMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ExecutorMutableDelegatedField.kt index d1f2366..d16d16c 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ExecutorMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ExecutorMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import java.util.concurrent.Executor import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/FilterDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/FilterDelegatedField.kt similarity index 96% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/FilterDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/FilterDelegatedField.kt index 4a82cc6..a6899b0 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/FilterDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/FilterDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import cn.tursom.core.cast import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/GetterDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/GetterDelegatedField.kt similarity index 92% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/GetterDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/GetterDelegatedField.kt index 86b205d..5d94c33 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/GetterDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/GetterDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/GetterMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/GetterMutableDelegatedField.kt similarity index 92% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/GetterMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/GetterMutableDelegatedField.kt index b8a9f0a..b0a4809 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/GetterMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/GetterMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/KPropertyDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/KPropertyDelegatedField.kt similarity index 84% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/KPropertyDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/KPropertyDelegatedField.kt index 2ab2d7b..1960a89 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/KPropertyDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/KPropertyDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty0 diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/KPropertyMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/KPropertyMutableDelegatedField.kt similarity index 88% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/KPropertyMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/KPropertyMutableDelegatedField.kt index 168d5ca..0c364cd 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/KPropertyMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/KPropertyMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KMutableProperty0 diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/LockMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/LockMutableDelegatedField.kt similarity index 96% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/LockMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/LockMutableDelegatedField.kt index 76c2924..a1a20f0 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/LockMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/LockMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import java.util.concurrent.locks.Lock import java.util.concurrent.locks.ReentrantLock diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/MutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/MutableDelegatedField.kt similarity index 94% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/MutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/MutableDelegatedField.kt index fd4f19e..d998c9a 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/MutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/MutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/MutableDelegatedFieldValue.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/MutableDelegatedFieldValue.kt similarity index 92% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/MutableDelegatedFieldValue.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/MutableDelegatedFieldValue.kt index c2aca26..2af9a52 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/MutableDelegatedFieldValue.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/MutableDelegatedFieldValue.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/NotNullDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/NotNullDelegatedField.kt similarity index 86% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/NotNullDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/NotNullDelegatedField.kt index 7e82e96..f04f04f 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/NotNullDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/NotNullDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import cn.tursom.core.cast diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/NotNullMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/NotNullMutableDelegatedField.kt similarity index 88% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/NotNullMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/NotNullMutableDelegatedField.kt index 9e2b9ad..446a773 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/NotNullMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/NotNullMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import cn.tursom.core.cast diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ReadWriteLockMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ReadWriteLockMutableDelegatedField.kt similarity index 97% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ReadWriteLockMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ReadWriteLockMutableDelegatedField.kt index 4f2d2ee..028f4d5 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ReadWriteLockMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ReadWriteLockMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import java.util.concurrent.locks.ReadWriteLock import java.util.concurrent.locks.ReentrantReadWriteLock diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SetterDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SetterDelegatedField.kt similarity index 90% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SetterDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SetterDelegatedField.kt index 140654c..3d977d3 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SetterDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SetterDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation class SetterDelegatedField<T, V>( override val delegatedField: DelegatedField<T, V>, diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SetterMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SetterMutableDelegatedField.kt similarity index 93% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SetterMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SetterMutableDelegatedField.kt index 5bfb42b..d80bbab 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SetterMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SetterMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import kotlin.reflect.KProperty diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SimpThreadLocalMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SimpThreadLocalMutableDelegatedField.kt similarity index 91% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SimpThreadLocalMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SimpThreadLocalMutableDelegatedField.kt index 0aadf5d..5dfdeae 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/SimpThreadLocalMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/SimpThreadLocalMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation import cn.tursom.core.SimpThreadLocal diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ThreadLocalMutableDelegatedField.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ThreadLocalMutableDelegatedField.kt similarity index 88% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ThreadLocalMutableDelegatedField.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ThreadLocalMutableDelegatedField.kt index ba5ee3f..8284aba 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/ThreadLocalMutableDelegatedField.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/ThreadLocalMutableDelegatedField.kt @@ -1,4 +1,4 @@ -package cn.tursom.delegation +package cn.tursom.core.delegation class ThreadLocalMutableDelegatedField<in T, V>( private val threadLocal: ThreadLocal<V?> = ThreadLocal() diff --git a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/delegations.kt b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/delegations.kt similarity index 99% rename from ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/delegations.kt rename to ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/delegations.kt index f0e5428..c0099e7 100644 --- a/ts-core/ts-delegation/src/main/kotlin/cn/tursom/delegation/delegations.kt +++ b/ts-core/ts-delegation/src/main/kotlin/cn/tursom/core/delegation/delegations.kt @@ -1,6 +1,6 @@ @file:Suppress("unused") -package cn.tursom.delegation +package cn.tursom.core.delegation import cn.tursom.core.SimpThreadLocal import cn.tursom.core.cast diff --git a/ts-core/ts-encrypt/src/main/kotlin/cn/tursom/core/encrypt/ECC.kt b/ts-core/ts-encrypt/src/main/kotlin/cn/tursom/core/encrypt/ECC.kt index f881ddf..891f257 100644 --- a/ts-core/ts-encrypt/src/main/kotlin/cn/tursom/core/encrypt/ECC.kt +++ b/ts-core/ts-encrypt/src/main/kotlin/cn/tursom/core/encrypt/ECC.kt @@ -2,7 +2,6 @@ package cn.tursom.core.encrypt import cn.tursom.core.Unsafe import cn.tursom.core.cast -import sun.security.ec.CurveDB import java.security.KeyFactory import java.security.KeyPair import java.security.KeyPairGenerator @@ -17,7 +16,7 @@ import java.security.spec.X509EncodedKeySpec @Suppress("unused", "MemberVisibilityCanBePrivate") class ECC( publicKey: ECPublicKey, - privateKey: ECPrivateKey? = null + privateKey: ECPrivateKey? = null, ) : AbstractPublicKeyEncrypt("EC", publicKey, privateKey) { override val decryptMaxLen = Int.MAX_VALUE @@ -41,7 +40,7 @@ class ECC( constructor( keySize: Int = 256, - standardCurveLine: String = StandardCurveLine.secp256k1.name.replace('_', ' ') + standardCurveLine: String = StandardCurveLine.secp256k1.name.replace('_', ' '), ) : this( keySize, ECGenParameterSpec(standardCurveLine) @@ -71,8 +70,12 @@ class ECC( companion object { val standardCurveLineSet by lazy { - Unsafe { - CurveDB::class.java["nameMap"].cast<Map<String, Any>>().keys + try { + Unsafe { + Class.forName("sun.security.ec.CurveDB")["nameMap"].cast<Map<String, Any>>().keys + } + } catch (e: Exception) { + emptySet() } } } diff --git a/ts-database/build.gradle.kts b/ts-database/build.gradle.kts new file mode 100644 index 0000000..401523a --- /dev/null +++ b/ts-database/build.gradle.kts @@ -0,0 +1,34 @@ +plugins { + kotlin("jvm") + `maven-publish` +} + +dependencies { + api(project(":")) + api(group = "me.liuwj.ktorm", name = "ktorm-core", version = "3.1.0") + compileOnly(group = "com.baomidou", name = "mybatis-plus", version = "3.4.2") + compileOnly(group = "com.google.code.gson", name = "gson", version = "2.8.6") +} + +@kotlin.Suppress("UNCHECKED_CAST") +(rootProject.ext["excludeTest"] as (Project, TaskContainer) -> Unit)(project, tasks) + +tasks.register("install") { + finalizedBy(tasks["publishToMavenLocal"]) +} + +publishing { + publications { + create<MavenPublication>("maven") { + groupId = project.group.toString() + artifactId = project.name + version = project.version.toString() + + from(components["java"]) + try { + artifact(tasks["sourcesJar"]) + } catch (e: Exception) { + } + } + } +} diff --git a/ts-database/src/main/kotlin/cn/tursom/database/AutoTable.kt b/ts-database/src/main/kotlin/cn/tursom/database/AutoTable.kt new file mode 100644 index 0000000..b9e615d --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/AutoTable.kt @@ -0,0 +1,84 @@ +package cn.tursom.database + +import com.baomidou.mybatisplus.annotation.TableField +import com.ddbes.kotlin.clone.Property +import com.ddbes.kotlin.clone.inject +import com.ddbes.kotlin.clone.instance +import com.ddbes.kotlin.jdbc.simpTableField +import com.ddbes.kotlin.jdbc.tableName +import com.ddbes.kotlin.uncheckedCast +import me.liuwj.ktorm.dsl.QueryRowSet +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.util.concurrent.ConcurrentHashMap +import kotlin.reflect.KClass +import kotlin.reflect.KProperty +import kotlin.reflect.KProperty0 +import kotlin.reflect.KProperty1 +import kotlin.reflect.full.memberProperties +import kotlin.reflect.jvm.javaField + +open class AutoTable<T : Any>( + entityClass: KClass<T>, + tableName: String = entityClass.tableName, + alias: String? = null, + catalog: String? = null, + schema: String? = null, + val unsafe: Boolean = true, +) : BaseTable<T>(tableName, alias, catalog, schema, entityClass) { + private val fieldMap: Map<String, KProperty<*>> + private val fieldColumns: MutableMap<KProperty<*>, Column<*>> = HashMap() + private val fieldNameColumnMap: MutableMap<String, Column<*>> = HashMap() + + init { + fieldMap = entityClass.memberProperties.associateBy { it.simpTableField } + entityClass.memberProperties.forEach { + val field = it.javaField ?: return@forEach + val tableField: TableField? = field.getAnnotation(TableField::class.java) + if (tableField?.exist == false) return@forEach + //TypeAdapterFactory.register(this, it) + val column = TypeAdapterFactory.register(this, it) ?: return@forEach + fieldColumns[it] = column + fieldNameColumnMap[it.name] = column + } + } + + override fun doCreateEntity(row: QueryRowSet, withReferences: Boolean): T { + val instance = instance(unsafe, entityClass!!.java) + columns.forEach { + val field = fieldMap[it.name] ?: return@forEach + row[it]?.inject(instance, field.uncheckedCast<Property<Any>>()) + } + return instance + } + + operator fun <R : Any> get(property: KProperty1<T, R?>): Column<R> = fieldColumns[property].uncheckedCast() + //operator fun <R : Any> get(property: KProperty1<T, R?>): Column<R> = this[property.simpTableField].cast() + + fun <V : Any> field(): FieldProxy<T, V> = fieldProxyInstance.uncheckedCast() + fun <V : Any> field(property: KProperty0<*>): Column<V> = fieldNameColumnMap[property.name].uncheckedCast() + + companion object { + private val fieldProxyInstance = FieldProxy<Any, Any>() + private val autoTableMap = ConcurrentHashMap<Class<*>, AutoTable<*>>() + operator fun <T : Any> get(clazz: KClass<T>): AutoTable<T> = get(clazz.java) + + operator fun <T : Any> get(clazz: Class<T>): AutoTable<T> { + var autoTable = autoTableMap[clazz] + if (autoTable == null) { + synchronized(autoTableMap) { + autoTable = AutoTable(clazz.kotlin) + autoTableMap[clazz] = autoTable.uncheckedCast() + } + } + return autoTable.uncheckedCast() + } + + class FieldProxy<T : Any, V : Any> { + operator fun getValue( + autoTable: AutoTable<T>, + property: KProperty<*>, + ): Column<V> = autoTable.fieldNameColumnMap[property.name].uncheckedCast() + } + } +} diff --git a/ts-database/src/main/kotlin/cn/tursom/database/JsonType.kt b/ts-database/src/main/kotlin/cn/tursom/database/JsonType.kt new file mode 100644 index 0000000..74539cf --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/JsonType.kt @@ -0,0 +1,27 @@ +package cn.tursom.database + +import com.ddbes.kotlin.Utils +import com.google.gson.Gson +import me.liuwj.ktorm.schema.SqlType +import java.lang.reflect.Type +import java.sql.PreparedStatement +import java.sql.ResultSet +import java.sql.Types + +@Suppress("MemberVisibilityCanBePrivate") +class JsonType<T : Any>( + val clazz: Type, + type: Int = Types.VARCHAR, + val gson: Gson = Utils.gson +) : SqlType<T>(type, "json") { + constructor(clazz: Class<T>, type: Int = Types.VARCHAR) : this(clazz as Type, type) + + override fun doGetResult(rs: ResultSet, index: Int): T? { + val result = rs.getString(index) ?: return null + return gson.fromJson(result, clazz) + } + + override fun doSetParameter(ps: PreparedStatement, index: Int, parameter: T) { + ps.setString(index, gson.toJson(parameter)) + } +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/SqlExtension.kt b/ts-database/src/main/kotlin/cn/tursom/database/SqlExtension.kt new file mode 100644 index 0000000..ae7aa40 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/SqlExtension.kt @@ -0,0 +1,151 @@ +@file:Suppress("unused") + +package cn.tursom.database + +import com.ddbes.kotlin.Utils +import com.ddbes.kotlin.jdbc.simpTableField +import com.ddbes.kotlin.uncheckedCast +import com.google.gson.Gson +import me.liuwj.ktorm.dsl.Query +import me.liuwj.ktorm.dsl.QueryRowSet +import me.liuwj.ktorm.schema.* +import java.math.BigDecimal +import java.sql.Date +import java.sql.Time +import java.sql.Timestamp +import java.sql.Types +import java.time.* +import java.util.* +import kotlin.reflect.KProperty +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.javaField +import kotlin.reflect.jvm.javaType + +val KProperty<*>.table + get() = AutoTable[javaField!!.declaringClass].uncheckedCast<AutoTable<Any>>() +val <T : Any> KProperty<T>.sql + get() = table[this.uncheckedCast<KProperty1<Any, T>>()] + +inline val <reified T : Any> KProperty1<T, *>.table + get() = AutoTable[T::class.java] + +inline val <reified T : Any, R : Any> KProperty1<T, R?>.sql + get() = table[this] + +fun <T> Query.getOne(transform: (rowSet: QueryRowSet) -> T): T? = if (rowSet.next()) { + transform(rowSet) +} else { + null +} + +inline fun <reified T : Any> Query.getOne(): T? = if (rowSet.next()) { + AutoTable[T::class].createEntity(rowSet) +} else { + null +} + +fun <C : Any, E : Any> BaseTable<E>.json( + field: KProperty1<E, C?>, + type: Int = Types.VARCHAR, + gson: Gson = Utils.gson, +): Column<C> { + val sqlType = JsonType<C>(field.returnType.javaType, type, gson) + return this.registerColumn(field.simpTableField, sqlType) +} + +fun <E : Any> BaseTable<E>.boolean( + field: KProperty1<E, Boolean?>, +) = boolean(field.simpTableField) + +fun <E : Any> BaseTable<E>.int( + field: KProperty1<E, Int?>, +) = int(field.simpTableField) + +fun <E : Any> BaseTable<E>.long( + field: KProperty1<E, Long?>, +) = long(field.simpTableField) + +fun <E : Any> BaseTable<E>.float( + field: KProperty1<E, Float?>, +) = float(field.simpTableField) + +fun <E : Any> BaseTable<E>.double( + field: KProperty1<E, Double?>, +) = double(field.simpTableField) + +fun <E : Any> BaseTable<E>.decimal( + field: KProperty1<E, BigDecimal?>, +) = decimal(field.simpTableField) + +fun <E : Any> BaseTable<E>.varchar( + field: KProperty1<E, String?>, +) = varchar(field.simpTableField) + +fun <E : Any> BaseTable<E>.text( + field: KProperty1<E, String?>, +) = text(field.simpTableField) + +fun <E : Any> BaseTable<E>.blob( + field: KProperty1<E, ByteArray?>, +) = blob(field.simpTableField) + +fun <E : Any> BaseTable<E>.bytes( + field: KProperty1<E, ByteArray?>, +) = bytes(field.simpTableField) + +fun <E : Any> BaseTable<E>.jdbcTimestamp( + field: KProperty1<E, Timestamp?>, +) = jdbcTimestamp(field.simpTableField) + +fun <E : Any> BaseTable<E>.jdbcDate( + field: KProperty1<E, Date?>, +) = jdbcDate(field.simpTableField) + +fun <E : Any> BaseTable<E>.jdbcTime( + field: KProperty1<E, Time?>, +) = jdbcTime(field.simpTableField) + +fun <E : Any> BaseTable<E>.timestamp( + field: KProperty1<E, Instant?>, +) = timestamp(field.simpTableField) + +fun <E : Any> BaseTable<E>.datetime( + field: KProperty1<E, LocalDateTime?>, +) = datetime(field.simpTableField) + +fun <E : Any> BaseTable<E>.date( + field: KProperty1<E, LocalDate?>, +) = date(field.simpTableField) + +fun <E : Any> BaseTable<E>.time( + field: KProperty1<E, LocalTime?>, +) = time(field.simpTableField) + +fun <E : Any> BaseTable<E>.monthDay( + field: KProperty1<E, MonthDay?>, +) = monthDay(field.simpTableField) + + +fun <E : Any> BaseTable<E>.yearMonth( + field: KProperty1<E, YearMonth?>, +) = yearMonth(field.simpTableField) + + +fun <E : Any> BaseTable<E>.year( + field: KProperty1<E, Year?>, +) = year(field.simpTableField) + +fun <E : Any> BaseTable<E>.uuid( + field: KProperty1<E, UUID?>, +) = uuid(field.simpTableField) + +fun <E : Any, C : Enum<C>> BaseTable<E>.enum( + field: KProperty1<E, C?>, + typeRef: TypeReference<C>, +) = enum(field.simpTableField, typeRef) + +fun <E : Any, C : Enum<C>> BaseTable<E>.enum( + field: KProperty1<E, C?>, + type: Class<C>, +) = registerColumn(field.simpTableField, EnumSqlType(type)) + diff --git a/ts-database/src/main/kotlin/cn/tursom/database/TypeAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/TypeAdapter.kt new file mode 100644 index 0000000..e38fc29 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/TypeAdapter.kt @@ -0,0 +1,25 @@ +package cn.tursom.database + +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 + +/** + * 将属性转化为表列的适配器 + */ +interface TypeAdapter<T : Any> { + /** + * 该适配器的优先级,优先级越高则越优先匹配 + * 同等优先级先注册者先匹配 + */ + val level: Int get() = 0 + + /** + * 注册列 + * 如果失败则返回null + */ + fun register( + table: BaseTable<Any>, + field: KProperty1<Any, T> + ): Column<T>? +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/TypeAdapterFactory.kt b/ts-database/src/main/kotlin/cn/tursom/database/TypeAdapterFactory.kt new file mode 100644 index 0000000..a82961f --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/TypeAdapterFactory.kt @@ -0,0 +1,76 @@ +package cn.tursom.database + +import com.ddbes.kotlin.classutil.getClassByPackage +import com.ddbes.kotlin.clone.InstantAllocator +import com.ddbes.kotlin.uncheckedCast +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.util.concurrent.ConcurrentSkipListMap +import java.util.concurrent.CopyOnWriteArraySet +import kotlin.reflect.KProperty1 +import kotlin.reflect.full.isSubclassOf + +/** + * 注册类型适配器的工厂 + */ +object TypeAdapterFactory { + private val adapterMap = ConcurrentSkipListMap<Int, MutableSet<TypeAdapter<*>>>() + + init { + scanPackage(TypeAdapterFactory::class.java.`package`.name + ".typeadapter") + } + + private fun getAdapterQueue(level: Int): MutableCollection<TypeAdapter<*>> { + var set = adapterMap[-level] + if (set == null) { + synchronized(this) { + adapterMap[-level] = CopyOnWriteArraySet() + set = adapterMap[-level]!! + } + } + return set!! + } + + /** + * 扫描包并注册适配器 + */ + fun scanPackage( + pkg: String, + classLoader: ClassLoader = this.javaClass.classLoader, + ) { + classLoader.getClassByPackage(pkg).forEach { + try { + val clazz = Class.forName(it).kotlin + if (clazz.isSubclassOf(TypeAdapter::class)) { + val adapter: TypeAdapter<*> = InstantAllocator[clazz].uncheckedCast() + registerAdapter(adapter) + } + } catch (e: Throwable) { + } + } + } + + /** + * 注册适配器实例 + */ + fun registerAdapter(adapter: TypeAdapter<*>) { + getAdapterQueue(adapter.level).add(adapter) + } + + fun register( + table: BaseTable<*>, + field: KProperty1<*, *>, + ): Column<*>? { + adapterMap.forEach { (_, queue) -> + queue.forEach { + val column = it.register(table.uncheckedCast(), field.uncheckedCast()) + if (column != null) { + return column + } + } + } + return null + } + + override fun toString() = adapterMap.toString() +} diff --git a/ts-database/src/main/kotlin/cn/tursom/database/annotations/Json.kt b/ts-database/src/main/kotlin/cn/tursom/database/annotations/Json.kt new file mode 100644 index 0000000..b26a628 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/annotations/Json.kt @@ -0,0 +1,7 @@ +package cn.tursom.database.annotations + + +@MustBeDocumented +@Retention(AnnotationRetention.RUNTIME) +@Target(AnnotationTarget.PROPERTY) +annotation class Json \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/BooleanAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/BooleanAdapter.kt new file mode 100644 index 0000000..31b2328 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/BooleanAdapter.kt @@ -0,0 +1,20 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.boolean +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object BooleanAdapter : TypeAdapter<Boolean> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Boolean>): Column<Boolean>? { + return if (field.returnType.jvmErasure == Boolean::class) { + table.boolean(field) + } else { + null + } + } + + override fun toString() = "BooleanAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/BytesAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/BytesAdapter.kt new file mode 100644 index 0000000..3720b9b --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/BytesAdapter.kt @@ -0,0 +1,20 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.bytes +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object BytesAdapter : TypeAdapter<ByteArray> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, ByteArray>): Column<ByteArray>? { + return if (field.returnType.jvmErasure == ByteArray::class) { + table.bytes(field) + } else { + null + } + } + + override fun toString() = "BytesAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/DateAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/DateAdapter.kt new file mode 100644 index 0000000..e1b5219 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/DateAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.jdbcDate +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.sql.Date +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object DateAdapter : TypeAdapter<Date> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Date>): Column<Date>? { + return if (field.returnType.jvmErasure == Date::class) { + table.jdbcDate(field) + } else { + null + } + } + + override fun toString() = "DateAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/DoubleAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/DoubleAdapter.kt new file mode 100644 index 0000000..7c089df --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/DoubleAdapter.kt @@ -0,0 +1,20 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.double +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object DoubleAdapter : TypeAdapter<Double> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Double>): Column<Double>? { + return if (field.returnType.jvmErasure == Double::class) { + table.double(field) + } else { + null + } + } + + override fun toString() = "DoubleAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/EnumAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/EnumAdapter.kt new file mode 100644 index 0000000..1b5dbc5 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/EnumAdapter.kt @@ -0,0 +1,28 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import com.ddbes.kotlin.jdbc.simpTableField +import com.ddbes.kotlin.uncheckedCast +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import me.liuwj.ktorm.schema.EnumSqlType +import kotlin.reflect.KProperty1 +import kotlin.reflect.full.isSubclassOf +import kotlin.reflect.jvm.jvmErasure + +object EnumAdapter : TypeAdapter<EnumAdapter.EnumType> { + enum class EnumType + + override fun register(table: BaseTable<Any>, field: KProperty1<Any, EnumType>): Column<EnumType>? { + val kClass = field.returnType.jvmErasure + return if (kClass.isSubclassOf(Enum::class)) { + table.registerColumn(field.simpTableField, EnumSqlType<EnumType>(kClass.java.uncheckedCast())) + .uncheckedCast() + } else { + null + } + } + + override fun toString() = "EnumAdapter" + +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/FloatAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/FloatAdapter.kt new file mode 100644 index 0000000..cbecf76 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/FloatAdapter.kt @@ -0,0 +1,20 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.float +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object FloatAdapter : TypeAdapter<Float> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Float>): Column<Float>? { + return if (field.returnType.jvmErasure == Float::class) { + table.float(field) + } else { + null + } + } + + override fun toString() = "FloatAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/InstantAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/InstantAdapter.kt new file mode 100644 index 0000000..eda69b9 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/InstantAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.timestamp +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.time.Instant +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object InstantAdapter : TypeAdapter<Instant> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Instant>): Column<Instant>? { + return if (field.returnType.jvmErasure == Instant::class) { + table.timestamp(field) + } else { + null + } + } + + override fun toString() = "InstantAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/IntAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/IntAdapter.kt new file mode 100644 index 0000000..1a2e2ee --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/IntAdapter.kt @@ -0,0 +1,20 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.int +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object IntAdapter : TypeAdapter<Int> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Int>): Column<Int>? { + return if (field.returnType.jvmErasure == Int::class) { + table.int(field) + } else { + null + } + } + + override fun toString() = "IntAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/IntAdapterAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/IntAdapterAdapter.kt new file mode 100644 index 0000000..e9c69be --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/IntAdapterAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.decimal +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.math.BigDecimal +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object IntAdapterAdapter : TypeAdapter<BigDecimal> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, BigDecimal>): Column<BigDecimal>? { + return if (field.returnType.jvmErasure == BigDecimal::class) { + table.decimal(field) + } else { + null + } + } + + override fun toString() = "IntAdapterAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/JsonAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/JsonAdapter.kt new file mode 100644 index 0000000..4122ae4 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/JsonAdapter.kt @@ -0,0 +1,23 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.annotations.Json +import cn.tursom.database.json +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.full.findAnnotation + +object JsonAdapter : TypeAdapter<Int> { + override val level: Int get() = -16 + + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Int>): Column<Int>? { + return if (field.findAnnotation<Json>() != null) { + table.json(field) + } else { + null + } + } + + override fun toString() = "JsonAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalDateAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalDateAdapter.kt new file mode 100644 index 0000000..2638b58 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalDateAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.date +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.time.LocalDate +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object LocalDateAdapter : TypeAdapter<LocalDate> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, LocalDate>): Column<LocalDate>? { + return if (field.returnType.jvmErasure == LocalDate::class) { + table.date(field) + } else { + null + } + } + + override fun toString() = "LocalDateAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalDateTimeAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalDateTimeAdapter.kt new file mode 100644 index 0000000..b490c0e --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalDateTimeAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.datetime +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.time.LocalDateTime +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object LocalDateTimeAdapter : TypeAdapter<LocalDateTime> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, LocalDateTime>): Column<LocalDateTime>? { + return if (field.returnType.jvmErasure == LocalDateTime::class) { + table.datetime(field) + } else { + null + } + } + + override fun toString() = "LocalDateTimeAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalTimeAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalTimeAdapter.kt new file mode 100644 index 0000000..c80e3ab --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LocalTimeAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.time +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.time.LocalTime +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object LocalTimeAdapter : TypeAdapter<LocalTime> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, LocalTime>): Column<LocalTime>? { + return if (field.returnType.jvmErasure == LocalTime::class) { + table.time(field) + } else { + null + } + } + + override fun toString() = "LocalTimeAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LongAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LongAdapter.kt new file mode 100644 index 0000000..6a8ba9a --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/LongAdapter.kt @@ -0,0 +1,20 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.long +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object LongAdapter : TypeAdapter<Long> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Long>): Column<Long>? { + return if (field.returnType.jvmErasure == Long::class) { + table.long(field) + } else { + null + } + } + + override fun toString() = "LongAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/MonthDayAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/MonthDayAdapter.kt new file mode 100644 index 0000000..385b71b --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/MonthDayAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.monthDay +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.time.MonthDay +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object MonthDayAdapter : TypeAdapter<MonthDay> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, MonthDay>): Column<MonthDay>? { + return if (field.returnType.jvmErasure == MonthDay::class) { + table.monthDay(field) + } else { + null + } + } + + override fun toString() = "MonthDayAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/StringAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/StringAdapter.kt new file mode 100644 index 0000000..1aeb332 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/StringAdapter.kt @@ -0,0 +1,20 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.varchar +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object StringAdapter : TypeAdapter<String> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, String>): Column<String>? { + return if (field.returnType.jvmErasure == String::class) { + table.varchar(field) + } else { + null + } + } + + override fun toString() = "StringAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/TimeAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/TimeAdapter.kt new file mode 100644 index 0000000..7d13a0b --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/TimeAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.jdbcTime +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.sql.Time +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object TimeAdapter : TypeAdapter<Time> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Time>): Column<Time>? { + return if (field.returnType.jvmErasure == Time::class) { + table.jdbcTime(field) + } else { + null + } + } + + override fun toString() = "TimeAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/TimestampAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/TimestampAdapter.kt new file mode 100644 index 0000000..9257fe1 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/TimestampAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.jdbcTimestamp +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.sql.Timestamp +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object TimestampAdapter : TypeAdapter<Timestamp> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Timestamp>): Column<Timestamp>? { + return if (field.returnType.jvmErasure == Timestamp::class) { + table.jdbcTimestamp(field) + } else { + null + } + } + + override fun toString() = "TimestampAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/UUIDAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/UUIDAdapter.kt new file mode 100644 index 0000000..06de931 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/UUIDAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.uuid +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.util.* +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object UUIDAdapter : TypeAdapter<UUID> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, UUID>): Column<UUID>? { + return if (field.returnType.jvmErasure == UUID::class) { + table.uuid(field) + } else { + null + } + } + + override fun toString() = "UUIDAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/YearAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/YearAdapter.kt new file mode 100644 index 0000000..e5bc90b --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/YearAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.year +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.time.Year +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object YearAdapter : TypeAdapter<Year> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, Year>): Column<Year>? { + return if (field.returnType.jvmErasure == Year::class) { + table.year(field) + } else { + null + } + } + + override fun toString() = "YearAdapter" +} \ No newline at end of file diff --git a/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/YearMonthAdapter.kt b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/YearMonthAdapter.kt new file mode 100644 index 0000000..c53cc16 --- /dev/null +++ b/ts-database/src/main/kotlin/cn/tursom/database/typeadapter/YearMonthAdapter.kt @@ -0,0 +1,21 @@ +package cn.tursom.database.typeadapter + +import cn.tursom.database.TypeAdapter +import cn.tursom.database.yearMonth +import me.liuwj.ktorm.schema.BaseTable +import me.liuwj.ktorm.schema.Column +import java.time.YearMonth +import kotlin.reflect.KProperty1 +import kotlin.reflect.jvm.jvmErasure + +object YearMonthAdapter : TypeAdapter<YearMonth> { + override fun register(table: BaseTable<Any>, field: KProperty1<Any, YearMonth>): Column<YearMonth>? { + return if (field.returnType.jvmErasure == YearMonth::class) { + table.yearMonth(field) + } else { + null + } + } + + override fun toString() = "YearMonthAdapter" +} \ No newline at end of file