mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-11-04 14:14:51 +00:00 
			
		
		
		
	Compare commits
	
		
			18 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3a45e5dc70 | |||
| 73190518d5 | |||
| 03f78180dc | |||
| 1c0b8cf842 | |||
| a1624ea2a9 | |||
| 23a050cf1e | |||
| 916f2f96f4 | |||
| 00cc214754 | |||
| b2e38f72b9 | |||
| e7107d238d | |||
| ed9ebdbd1a | |||
| e80676d3d2 | |||
| 02d02fa8f2 | |||
| bd783fb74f | |||
| 50386adf70 | |||
| f4ee6c2890 | |||
| d45aef9fe5 | |||
| a56cd3dddd | 
							
								
								
									
										2
									
								
								.github/workflows/dokka_push.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/dokka_push.yml
									
									
									
									
										vendored
									
									
								
							@@ -10,7 +10,7 @@ jobs:
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
      - uses: actions/setup-java@v1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: 1.8
 | 
			
		||||
          java-version: 11
 | 
			
		||||
      - name: Fix android 32.0.0 dx
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
        run: cd /usr/local/lib/android/sdk/build-tools/32.0.0/ && mv d8 dx && cd lib  && mv d8.jar dx.jar
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								.github/workflows/packages_push.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/packages_push.yml
									
									
									
									
										vendored
									
									
								
							@@ -8,7 +8,7 @@ jobs:
 | 
			
		||||
      - uses: actions/checkout@v2
 | 
			
		||||
      - uses: actions/setup-java@v1
 | 
			
		||||
        with:
 | 
			
		||||
          java-version: 1.8
 | 
			
		||||
          java-version: 11
 | 
			
		||||
      - name: Fix android 32.0.0 dx
 | 
			
		||||
        continue-on-error: true
 | 
			
		||||
        run: cd /usr/local/lib/android/sdk/build-tools/32.0.0/ && mv d8 dx && cd lib  && mv d8.jar dx.jar
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -11,5 +11,6 @@ out/
 | 
			
		||||
 | 
			
		||||
secret.gradle
 | 
			
		||||
local.properties
 | 
			
		||||
kotlin-js-store
 | 
			
		||||
 | 
			
		||||
publishing.sh
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										32
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -1,5 +1,37 @@
 | 
			
		||||
# Changelog
 | 
			
		||||
 | 
			
		||||
## 0.9.3
 | 
			
		||||
 | 
			
		||||
* `Versions`:
 | 
			
		||||
    * `UUID`: `0.3.1` -> `0.4.0`
 | 
			
		||||
 | 
			
		||||
## 0.9.2
 | 
			
		||||
 | 
			
		||||
* `Versions`:
 | 
			
		||||
    * `Klock`: `2.4.10` -> `2.4.12`
 | 
			
		||||
 | 
			
		||||
## 0.9.1
 | 
			
		||||
 | 
			
		||||
* `Repos`:
 | 
			
		||||
    * `Exposed`:
 | 
			
		||||
        * Default realizations of standard interfaces for exposed DB are using public fields for now:
 | 
			
		||||
            * `ExposedReadKeyValueRepo`
 | 
			
		||||
            * `ExposedReadOneToManyKeyValueRepo`
 | 
			
		||||
            * `ExposedStandardVersionsRepoProxy`
 | 
			
		||||
        * New typealiases for one to many exposed realizations:
 | 
			
		||||
            * `ExposedReadKeyValuesRepo`
 | 
			
		||||
            * `ExposedKeyValuesRepo`
 | 
			
		||||
 | 
			
		||||
## 0.9.0
 | 
			
		||||
 | 
			
		||||
* `Versions`:
 | 
			
		||||
    * `Kotlin`: `1.5.31` -> `1.6.10`
 | 
			
		||||
    * `Coroutines`: `1.5.2` -> `1.6.0`
 | 
			
		||||
    * `Serialization`: `1.3.1` -> `1.3.2`
 | 
			
		||||
    * `Exposed`: `0.36.2` -> `0.37.2`
 | 
			
		||||
    * `Ktor`: `1.6.5` -> `1.6.7`
 | 
			
		||||
    * `Klock`: `2.4.8` -> `2.4.10`
 | 
			
		||||
 | 
			
		||||
## 0.8.9
 | 
			
		||||
 | 
			
		||||
* `Ktor`:
 | 
			
		||||
 
 | 
			
		||||
@@ -7,7 +7,7 @@ buildscript {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    dependencies {
 | 
			
		||||
        classpath 'com.android.tools.build:gradle:4.1.3'
 | 
			
		||||
        classpath 'com.android.tools.build:gradle:7.0.4'
 | 
			
		||||
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
 | 
			
		||||
        classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
 | 
			
		||||
        classpath "com.getkeepsafe.dexcount:dexcount-gradle-plugin:$dexcount_version"
 | 
			
		||||
 
 | 
			
		||||
@@ -32,8 +32,7 @@ class EitherSerializer<T1, T2>(
 | 
			
		||||
    t1Serializer: KSerializer<T1>,
 | 
			
		||||
    t2Serializer: KSerializer<T2>,
 | 
			
		||||
) : KSerializer<Either<T1, T2>> {
 | 
			
		||||
    @ExperimentalSerializationApi
 | 
			
		||||
    @InternalSerializationApi
 | 
			
		||||
    @OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
 | 
			
		||||
    override val descriptor: SerialDescriptor = buildSerialDescriptor(
 | 
			
		||||
        "TypedSerializer",
 | 
			
		||||
        SerialKind.CONTEXTUAL
 | 
			
		||||
@@ -44,8 +43,7 @@ class EitherSerializer<T1, T2>(
 | 
			
		||||
    private val t1EitherSerializer = EitherFirst.serializer(t1Serializer, t2Serializer)
 | 
			
		||||
    private val t2EitherSerializer = EitherSecond.serializer(t1Serializer, t2Serializer)
 | 
			
		||||
 | 
			
		||||
    @ExperimentalSerializationApi
 | 
			
		||||
    @InternalSerializationApi
 | 
			
		||||
    @OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
 | 
			
		||||
    override fun deserialize(decoder: Decoder): Either<T1, T2> {
 | 
			
		||||
        return decoder.decodeStructure(descriptor) {
 | 
			
		||||
            var type: String? = null
 | 
			
		||||
@@ -77,8 +75,7 @@ class EitherSerializer<T1, T2>(
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @ExperimentalSerializationApi
 | 
			
		||||
    @InternalSerializationApi
 | 
			
		||||
    @OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
 | 
			
		||||
    override fun serialize(encoder: Encoder, value: Either<T1, T2>) {
 | 
			
		||||
        encoder.encodeStructure(descriptor) {
 | 
			
		||||
            when (value) {
 | 
			
		||||
 
 | 
			
		||||
@@ -7,18 +7,18 @@ android.useAndroidX=true
 | 
			
		||||
android.enableJetifier=true
 | 
			
		||||
org.gradle.jvmargs=-Xmx2g
 | 
			
		||||
 | 
			
		||||
kotlin_version=1.5.31
 | 
			
		||||
kotlin_coroutines_version=1.5.2
 | 
			
		||||
kotlin_serialisation_core_version=1.3.1
 | 
			
		||||
kotlin_exposed_version=0.36.2
 | 
			
		||||
kotlin_version=1.6.10
 | 
			
		||||
kotlin_coroutines_version=1.6.0
 | 
			
		||||
kotlin_serialisation_core_version=1.3.2
 | 
			
		||||
kotlin_exposed_version=0.37.2
 | 
			
		||||
 | 
			
		||||
ktor_version=1.6.5
 | 
			
		||||
ktor_version=1.6.7
 | 
			
		||||
 | 
			
		||||
klockVersion=2.4.8
 | 
			
		||||
klockVersion=2.4.12
 | 
			
		||||
 | 
			
		||||
github_release_plugin_version=2.2.12
 | 
			
		||||
 | 
			
		||||
uuidVersion=0.3.1
 | 
			
		||||
uuidVersion=0.4.0
 | 
			
		||||
 | 
			
		||||
# ANDROID
 | 
			
		||||
 | 
			
		||||
@@ -40,10 +40,10 @@ crypto_js_version=4.1.1
 | 
			
		||||
 | 
			
		||||
# Dokka
 | 
			
		||||
 | 
			
		||||
dokka_version=1.5.31
 | 
			
		||||
dokka_version=1.6.0
 | 
			
		||||
 | 
			
		||||
# Project data
 | 
			
		||||
 | 
			
		||||
group=dev.inmo
 | 
			
		||||
version=0.8.9
 | 
			
		||||
android_code_version=89
 | 
			
		||||
version=0.9.3
 | 
			
		||||
android_code_version=93
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,4 @@
 | 
			
		||||
apply plugin: 'maven-publish'
 | 
			
		||||
apply plugin: 'signing'
 | 
			
		||||
 | 
			
		||||
task javadocsJar(type: Jar) {
 | 
			
		||||
    classifier = 'javadoc'
 | 
			
		||||
@@ -70,7 +69,18 @@ publishing {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
    
 | 
			
		||||
signing {
 | 
			
		||||
if (project.hasProperty("signing.gnupg.keyName")) {
 | 
			
		||||
    apply plugin: 'signing'
 | 
			
		||||
    
 | 
			
		||||
    signing {
 | 
			
		||||
        useGpgCmd()
 | 
			
		||||
    
 | 
			
		||||
        sign publishing.publications
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    task signAll {
 | 
			
		||||
        tasks.withType(Sign).forEach {
 | 
			
		||||
            dependsOn(it)
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1 +1 @@
 | 
			
		||||
{"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://github.com/InsanusMokrassar/MicroUtils/blob/master/LICENSE"}],"mavenConfig":{"name":"${project.name}","description":"It is set of projects with micro tools for avoiding of routines coding","url":"https://github.com/InsanusMokrassar/MicroUtils/","vcsUrl":"https://github.com/InsanusMokrassar/MicroUtils.git","includeGpgSigning":true,"developers":[{"id":"InsanusMokrassar","name":"Aleksei Ovsiannikov","eMail":"ovsyannikov.alexey95@gmail.com"},{"id":"000Sanya","name":"Syrov Aleksandr","eMail":"000sanya.000sanya@gmail.com"}],"repositories":[{"name":"GithubPackages","url":"https://maven.pkg.github.com/InsanusMokrassar/MicroUtils"},{"name":"sonatype","url":"https://oss.sonatype.org/service/local/staging/deploy/maven2/"}]}}
 | 
			
		||||
{"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://github.com/InsanusMokrassar/MicroUtils/blob/master/LICENSE"}],"mavenConfig":{"name":"${project.name}","description":"It is set of projects with micro tools for avoiding of routines coding","url":"https://github.com/InsanusMokrassar/MicroUtils/","vcsUrl":"https://github.com/InsanusMokrassar/MicroUtils.git","developers":[{"id":"InsanusMokrassar","name":"Aleksei Ovsiannikov","eMail":"ovsyannikov.alexey95@gmail.com"},{"id":"000Sanya","name":"Syrov Aleksandr","eMail":"000sanya.000sanya@gmail.com"}],"repositories":[{"name":"GithubPackages","url":"https://maven.pkg.github.com/InsanusMokrassar/MicroUtils"},{"name":"sonatype","url":"https://oss.sonatype.org/service/local/staging/deploy/maven2/"}],"gpgSigning":{"type":"dev.inmo.kmppscriptbuilder.core.models.GpgSigning.Optional"}}}
 | 
			
		||||
@@ -12,8 +12,8 @@ open class ExposedReadKeyValueRepo<Key, Value>(
 | 
			
		||||
    valueColumnAllocator: ColumnAllocator<Value>,
 | 
			
		||||
    tableName: String? = null
 | 
			
		||||
) : ReadStandardKeyValueRepo<Key, Value>, ExposedRepo, Table(tableName ?: "") {
 | 
			
		||||
    protected val keyColumn: Column<Key> = keyColumnAllocator()
 | 
			
		||||
    protected val valueColumn: Column<Value> = valueColumnAllocator()
 | 
			
		||||
    val keyColumn: Column<Key> = keyColumnAllocator()
 | 
			
		||||
    val valueColumn: Column<Value> = valueColumnAllocator()
 | 
			
		||||
    override val primaryKey: PrimaryKey = PrimaryKey(keyColumn, valueColumn)
 | 
			
		||||
 | 
			
		||||
    init { initTable() }
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ import kotlinx.coroutines.flow.*
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.transactions.transaction
 | 
			
		||||
 | 
			
		||||
typealias ExposedKeyValuesRepo<Key, Value> = ExposedOneToManyKeyValueRepo<Key, Value>
 | 
			
		||||
open class ExposedOneToManyKeyValueRepo<Key, Value>(
 | 
			
		||||
    database: Database,
 | 
			
		||||
    keyColumnAllocator: ColumnAllocator<Key>,
 | 
			
		||||
 
 | 
			
		||||
@@ -3,17 +3,20 @@ package dev.inmo.micro_utils.repos.exposed.onetomany
 | 
			
		||||
import dev.inmo.micro_utils.pagination.*
 | 
			
		||||
import dev.inmo.micro_utils.repos.ReadOneToManyKeyValueRepo
 | 
			
		||||
import dev.inmo.micro_utils.repos.exposed.*
 | 
			
		||||
import dev.inmo.micro_utils.repos.exposed.keyvalue.ExposedReadKeyValueRepo
 | 
			
		||||
import org.jetbrains.exposed.sql.*
 | 
			
		||||
import org.jetbrains.exposed.sql.transactions.transaction
 | 
			
		||||
 | 
			
		||||
typealias ExposedReadKeyValuesRepo<Key, Value> = ExposedReadOneToManyKeyValueRepo<Key, Value>
 | 
			
		||||
 | 
			
		||||
open class ExposedReadOneToManyKeyValueRepo<Key, Value>(
 | 
			
		||||
    override val database: Database,
 | 
			
		||||
    keyColumnAllocator: ColumnAllocator<Key>,
 | 
			
		||||
    valueColumnAllocator: ColumnAllocator<Value>,
 | 
			
		||||
    tableName: String? = null
 | 
			
		||||
) : ReadOneToManyKeyValueRepo<Key, Value>, ExposedRepo, Table(tableName ?: "") {
 | 
			
		||||
    protected val keyColumn: Column<Key> = keyColumnAllocator()
 | 
			
		||||
    protected val valueColumn: Column<Value> = valueColumnAllocator()
 | 
			
		||||
    val keyColumn: Column<Key> = keyColumnAllocator()
 | 
			
		||||
    val valueColumn: Column<Value> = valueColumnAllocator()
 | 
			
		||||
 | 
			
		||||
    init { initTable() }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -18,8 +18,8 @@ inline fun versionsRepo(database: Database): VersionsRepo<Database> = StandardVe
 | 
			
		||||
class ExposedStandardVersionsRepoProxy(
 | 
			
		||||
    override val database: Database
 | 
			
		||||
) : StandardVersionsRepoProxy<Database>, Table("ExposedVersionsProxy"), ExposedRepo {
 | 
			
		||||
    private val tableNameColumn = text("tableName")
 | 
			
		||||
    private val tableVersionColumn = integer("tableName")
 | 
			
		||||
    val tableNameColumn = text("tableName")
 | 
			
		||||
    val tableVersionColumn = integer("tableName")
 | 
			
		||||
 | 
			
		||||
    init {
 | 
			
		||||
        initTable()
 | 
			
		||||
 
 | 
			
		||||
@@ -11,8 +11,7 @@ open class TypedSerializer<T : Any>(
 | 
			
		||||
    presetSerializers: Map<String, KSerializer<out T>> = emptyMap(),
 | 
			
		||||
) : KSerializer<T> {
 | 
			
		||||
    protected val serializers = presetSerializers.toMutableMap()
 | 
			
		||||
    @ExperimentalSerializationApi
 | 
			
		||||
    @InternalSerializationApi
 | 
			
		||||
    @OptIn(InternalSerializationApi::class)
 | 
			
		||||
    override val descriptor: SerialDescriptor = buildSerialDescriptor(
 | 
			
		||||
        "TypedSerializer",
 | 
			
		||||
        SerialKind.CONTEXTUAL
 | 
			
		||||
@@ -21,8 +20,7 @@ open class TypedSerializer<T : Any>(
 | 
			
		||||
        element("value", ContextualSerializer(kClass).descriptor)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ExperimentalSerializationApi
 | 
			
		||||
    @InternalSerializationApi
 | 
			
		||||
    @OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
 | 
			
		||||
    override fun deserialize(decoder: Decoder): T {
 | 
			
		||||
        return decoder.decodeStructure(descriptor) {
 | 
			
		||||
            var type: String? = null
 | 
			
		||||
@@ -46,14 +44,12 @@ open class TypedSerializer<T : Any>(
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ExperimentalSerializationApi
 | 
			
		||||
    @InternalSerializationApi
 | 
			
		||||
    @OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
 | 
			
		||||
    protected open fun <O: T> CompositeEncoder.encode(value: O) {
 | 
			
		||||
        encodeSerializableElement(descriptor, 1, value::class.serializer() as KSerializer<O>, value)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ExperimentalSerializationApi
 | 
			
		||||
    @InternalSerializationApi
 | 
			
		||||
    @OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
 | 
			
		||||
    override fun serialize(encoder: Encoder, value: T) {
 | 
			
		||||
        encoder.encodeStructure(descriptor) {
 | 
			
		||||
            val valueSerializer = value::class.serializer()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user