mirror of
				https://github.com/InsanusMokrassar/MicroUtils.git
				synced 2025-10-30 19:50:31 +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