Compare commits

...

7 Commits

5 changed files with 34 additions and 17 deletions

View File

@@ -1,5 +1,16 @@
# Changelog # Changelog
## 0.12.6
* `MimeeTypes>`:
* Fixed absence of `image/*` in known mime types
## 0.12.5
* `Repos`:
* `Exposed`:
* Fixes in `paginate` extensions
## 0.12.4 ## 0.12.4
* `Versions`: * `Versions`:

View File

@@ -14,5 +14,5 @@ crypto_js_version=4.1.1
# Project data # Project data
group=dev.inmo group=dev.inmo
version=0.12.4 version=0.12.6
android_code_version=143 android_code_version=145

View File

@@ -2017,6 +2017,7 @@ internal val knownMimeTypes: Set<MimeType> = setOf(
KnownMimeTypes.Chemical.XCml, KnownMimeTypes.Chemical.XCml,
KnownMimeTypes.Chemical.XCsml, KnownMimeTypes.Chemical.XCsml,
KnownMimeTypes.Chemical.XXyz, KnownMimeTypes.Chemical.XXyz,
KnownMimeTypes.Image.Any,
KnownMimeTypes.Image.Bmp, KnownMimeTypes.Image.Bmp,
KnownMimeTypes.Image.Cgm, KnownMimeTypes.Image.Cgm,
KnownMimeTypes.Image.G3fax, KnownMimeTypes.Image.G3fax,

View File

@@ -4,11 +4,7 @@ import org.jetbrains.exposed.sql.*
fun Query.paginate(with: Pagination, orderBy: Pair<Expression<*>, SortOrder>? = null) = limit( fun Query.paginate(with: Pagination, orderBy: Pair<Expression<*>, SortOrder>? = null) = limit(
with.size, with.size,
(if (orderBy ?.second == SortOrder.DESC) { with.firstIndex.toLong()
with.lastIndex
} else {
with.firstIndex
}).toLong()
).let { ).let {
if (orderBy != null) { if (orderBy != null) {
it.orderBy( it.orderBy(

View File

@@ -3,6 +3,7 @@ package dev.inmo.micro_utils.repos.exposed.keyvalue
import dev.inmo.micro_utils.pagination.* import dev.inmo.micro_utils.pagination.*
import dev.inmo.micro_utils.repos.ReadKeyValueRepo import dev.inmo.micro_utils.repos.ReadKeyValueRepo
import dev.inmo.micro_utils.repos.exposed.* import dev.inmo.micro_utils.repos.exposed.*
import dev.inmo.micro_utils.repos.exposed.utils.selectPaginated
import org.jetbrains.exposed.sql.* import org.jetbrains.exposed.sql.*
import org.jetbrains.exposed.sql.transactions.transaction import org.jetbrains.exposed.sql.transactions.transaction
@@ -29,24 +30,32 @@ open class ExposedReadKeyValueRepo<Key, Value>(
override suspend fun count(): Long = transaction(database) { selectAll().count() } override suspend fun count(): Long = transaction(database) { selectAll().count() }
override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = transaction(database) { override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = transaction(database) {
selectAll().paginate(pagination, keyColumn to if (reversed) SortOrder.DESC else SortOrder.ASC).map { selectAll().selectPaginated(
pagination,
keyColumn,
reversed
) {
it[keyColumn] it[keyColumn]
} }
}.createPaginationResult(pagination, count()) }
override suspend fun keys(v: Value, pagination: Pagination, reversed: Boolean): PaginationResult<Key> = transaction(database) { override suspend fun keys(v: Value, pagination: Pagination, reversed: Boolean): PaginationResult<Key> = transaction(database) {
select { valueColumn.eq(v) }.let { select { valueColumn.eq(v) }.selectPaginated(
it.count() to it.paginate(pagination, keyColumn to if (reversed) SortOrder.DESC else SortOrder.ASC).map { pagination,
keyColumn,
reversed
) {
it[keyColumn] it[keyColumn]
} }
} }
}.let { (count, list) ->
list.createPaginationResult(pagination, count)
}
override suspend fun values(pagination: Pagination, reversed: Boolean): PaginationResult<Value> = transaction(database) { override suspend fun values(pagination: Pagination, reversed: Boolean): PaginationResult<Value> = transaction(database) {
selectAll().paginate(pagination, keyColumn to if (reversed) SortOrder.DESC else SortOrder.ASC).map { selectAll().selectPaginated(
pagination,
keyColumn,
reversed
) {
it[valueColumn] it[valueColumn]
} }
}.createPaginationResult(pagination, count()) }
} }