mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-10-20 06:40:32 +00:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
a1bf43def9 | |||
15e9254e00 | |||
afe5a72c6f | |||
750a8b9ecf | |||
27fc3f93e0 | |||
8166d4b99b | |||
b61d2ae2eb | |||
4790fe0aea | |||
bc37b11cee | |||
223fed910f | |||
b85ab7b061 | |||
888dc299c9 | |||
e113dc28ed | |||
31e55d2307 |
15
CHANGELOG.md
15
CHANGELOG.md
@@ -1,5 +1,20 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## 0.9.20
|
||||||
|
|
||||||
|
* `Repos`:
|
||||||
|
* `Common`:
|
||||||
|
* Fixes in `OneToManyAndroidRepo`
|
||||||
|
* New `CursorIterator`
|
||||||
|
|
||||||
|
## 0.9.19
|
||||||
|
|
||||||
|
* `Versions`:
|
||||||
|
* `Coroutines`: `1.6.0` -> `1.6.1`
|
||||||
|
* `Repos`:
|
||||||
|
* `Exposed`:
|
||||||
|
* Fixes in `ExposedStandardVersionsRepoProxy`
|
||||||
|
|
||||||
## 0.9.18
|
## 0.9.18
|
||||||
|
|
||||||
* `Common`
|
* `Common`
|
||||||
|
@@ -51,7 +51,6 @@ class EitherSerializer<T1, T2>(
|
|||||||
private val t1EitherSerializer = EitherFirst.serializer(t1Serializer, t2Serializer)
|
private val t1EitherSerializer = EitherFirst.serializer(t1Serializer, t2Serializer)
|
||||||
private val t2EitherSerializer = EitherSecond.serializer(t1Serializer, t2Serializer)
|
private val t2EitherSerializer = EitherSecond.serializer(t1Serializer, t2Serializer)
|
||||||
|
|
||||||
@OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
|
|
||||||
override fun deserialize(decoder: Decoder): Either<T1, T2> {
|
override fun deserialize(decoder: Decoder): Either<T1, T2> {
|
||||||
return decoder.decodeStructure(descriptor) {
|
return decoder.decodeStructure(descriptor) {
|
||||||
var type: String? = null
|
var type: String? = null
|
||||||
@@ -83,7 +82,6 @@ class EitherSerializer<T1, T2>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@OptIn(ExperimentalSerializationApi::class, InternalSerializationApi::class)
|
|
||||||
override fun serialize(encoder: Encoder, value: Either<T1, T2>) {
|
override fun serialize(encoder: Encoder, value: Either<T1, T2>) {
|
||||||
encoder.encodeStructure(descriptor) {
|
encoder.encodeStructure(descriptor) {
|
||||||
when (value) {
|
when (value) {
|
||||||
|
@@ -14,5 +14,5 @@ crypto_js_version=4.1.1
|
|||||||
# Project data
|
# Project data
|
||||||
|
|
||||||
group=dev.inmo
|
group=dev.inmo
|
||||||
version=0.9.18
|
version=0.9.20
|
||||||
android_code_version=108
|
android_code_version=110
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
kt = "1.6.10"
|
kt = "1.6.10"
|
||||||
kt-serialization = "1.3.2"
|
kt-serialization = "1.3.2"
|
||||||
kt-coroutines = "1.6.0"
|
kt-coroutines = "1.6.1"
|
||||||
|
|
||||||
jb-compose = "1.1.1"
|
jb-compose = "1.1.1"
|
||||||
jb-exposed = "0.37.3"
|
jb-exposed = "0.37.3"
|
||||||
|
@@ -6,7 +6,7 @@ import dev.inmo.micro_utils.pagination.*
|
|||||||
* Example:
|
* Example:
|
||||||
*
|
*
|
||||||
* * `|__f__l_______________________|` will be transformed to `|_______________________f__l__|`
|
* * `|__f__l_______________________|` will be transformed to `|_______________________f__l__|`
|
||||||
* * `|__f__l_|` will be transformed to `|__f__l_|`
|
* * `|__f__l_|` will be transformed to `|_f__l__|`
|
||||||
*
|
*
|
||||||
* @return Reversed version of this [Pagination]
|
* @return Reversed version of this [Pagination]
|
||||||
*/
|
*/
|
||||||
|
@@ -13,12 +13,12 @@ interface VersionsRepo<T> : Repo {
|
|||||||
* By default, instance of this interface will check that version of table with name [tableName] is less than
|
* By default, instance of this interface will check that version of table with name [tableName] is less than
|
||||||
* [version] or is absent
|
* [version] or is absent
|
||||||
*
|
*
|
||||||
* * In case if [tableName] didn't found, will be called [onCreate] and version of table will be set up to [version]
|
* In case if [tableName] didn't found, will be called [onCreate]. Then in case if [tableName] have version less
|
||||||
* * In case if [tableName] have version less than parameter [version], it will increase version one-by-one
|
* than parameter [version] or null, it will increase version one-by-one until database version will be equal to
|
||||||
* until database version will be equal to [version]
|
* [version]
|
||||||
*
|
*
|
||||||
* @param version Current version of table
|
* @param version Current version of table
|
||||||
* @param onCreate This callback will be called in case when table have no information about table
|
* @param onCreate This callback will be called in case when repo have no information about table
|
||||||
* @param onUpdate This callback will be called after **iterative** changing of version. It is expected that parameter
|
* @param onUpdate This callback will be called after **iterative** changing of version. It is expected that parameter
|
||||||
* "to" will always be greater than "from"
|
* "to" will always be greater than "from"
|
||||||
*/
|
*/
|
||||||
|
@@ -0,0 +1,27 @@
|
|||||||
|
package dev.inmo.micro_utils.repos
|
||||||
|
|
||||||
|
import android.database.Cursor
|
||||||
|
|
||||||
|
class CursorIterator(
|
||||||
|
private val c: Cursor
|
||||||
|
) : Iterator<Cursor> {
|
||||||
|
private var i = 0
|
||||||
|
|
||||||
|
init {
|
||||||
|
c.moveToFirst()
|
||||||
|
}
|
||||||
|
override fun hasNext(): Boolean {
|
||||||
|
return i < c.count
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun next(): Cursor {
|
||||||
|
i++
|
||||||
|
return if (c.moveToNext()) {
|
||||||
|
c
|
||||||
|
} else {
|
||||||
|
throw NoSuchElementException()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
operator fun Cursor.iterator(): CursorIterator = CursorIterator(this)
|
@@ -143,7 +143,12 @@ class OneToManyAndroidRepo<Key, Value>(
|
|||||||
}.toLong()
|
}.toLong()
|
||||||
|
|
||||||
override suspend fun count(k: Key): Long = helper.blockingReadableTransaction {
|
override suspend fun count(k: Key): Long = helper.blockingReadableTransaction {
|
||||||
selectDistinct(tableName, columns = valueColumnArray, selection = "$idColumnName=?", selectionArgs = arrayOf(k.keyAsString()), limit = FirstPagePagination(1).limitClause()).use {
|
selectDistinct(
|
||||||
|
tableName,
|
||||||
|
columns = valueColumnArray,
|
||||||
|
selection = "$idColumnName=?",
|
||||||
|
selectionArgs = arrayOf(k.keyAsString())
|
||||||
|
).use {
|
||||||
it.count
|
it.count
|
||||||
}
|
}
|
||||||
}.toLong()
|
}.toLong()
|
||||||
|
@@ -19,7 +19,7 @@ class ExposedStandardVersionsRepoProxy(
|
|||||||
override val database: Database
|
override val database: Database
|
||||||
) : StandardVersionsRepoProxy<Database>, Table("ExposedVersionsProxy"), ExposedRepo {
|
) : StandardVersionsRepoProxy<Database>, Table("ExposedVersionsProxy"), ExposedRepo {
|
||||||
val tableNameColumn = text("tableName")
|
val tableNameColumn = text("tableName")
|
||||||
val tableVersionColumn = integer("tableName")
|
val tableVersionColumn = integer("tableVersion")
|
||||||
|
|
||||||
init {
|
init {
|
||||||
initTable()
|
initTable()
|
||||||
|
Reference in New Issue
Block a user