diff --git a/CHANGELOG.md b/CHANGELOG.md index f65fb9423a1..9a77485f999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ ## 0.5.10 +* `Ktor` + * `Server` + * All elements in configurators became a `fun interface` +* `Pagination` + * New function `doForAllWithCurrentPaging` + ## 0.5.9 * `Repos` diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt index 9b04dcd3910..eaf14f1f637 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationCachingHeadersConfigurator.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Contextual data class ApplicationCachingHeadersConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - interface Element { operator fun CachingHeaders.Configuration.invoke() } + fun interface Element { operator fun CachingHeaders.Configuration.invoke() } override fun Application.configure() { install(CachingHeaders) { diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt index 8bb687a7744..2550dcb813b 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationRoutingConfigurator.kt @@ -10,17 +10,18 @@ import kotlinx.serialization.Serializable class ApplicationRoutingConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - interface Element { operator fun Route.invoke() } + fun interface Element { operator fun Route.invoke() } + private val rootInstaller = Element { + elements.forEach { + it.apply { invoke() } + } + } override fun Application.configure() { - try { - feature(Routing) - } catch (e: IllegalStateException) { - install(Routing) { - elements.forEach { - it.apply { invoke() } - } - } + featureOrNull(Routing) ?.apply { + rootInstaller.apply { invoke() } + } ?: install(Routing) { + rootInstaller.apply { invoke() } } } } diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt index 60513e24702..4ed2d16b009 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/ApplicationSessionsConfigurator.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Contextual class ApplicationSessionsConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - interface Element { operator fun Sessions.Configuration.invoke() } + fun interface Element { operator fun Sessions.Configuration.invoke() } override fun Application.configure() { install(Sessions) { diff --git a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt index 7bb090df3c1..7e25ba1482b 100644 --- a/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt +++ b/ktor/server/src/jvmMain/kotlin/dev/inmo/micro_utils/ktor/server/configurators/StatusPagesConfigurator.kt @@ -8,7 +8,7 @@ import kotlinx.serialization.Contextual class StatusPagesConfigurator( private val elements: List<@Contextual Element> ) : KtorApplicationConfigurator { - interface Element { operator fun StatusPages.Configuration.invoke() } + fun interface Element { operator fun StatusPages.Configuration.invoke() } override fun Application.configure() { install(StatusPages) { diff --git a/pagination/common/src/commonMain/kotlin/dev/inmo/micro_utils/pagination/utils/DoForAll.kt b/pagination/common/src/commonMain/kotlin/dev/inmo/micro_utils/pagination/utils/DoForAll.kt index 761e3b63629..b77f3b59848 100644 --- a/pagination/common/src/commonMain/kotlin/dev/inmo/micro_utils/pagination/utils/DoForAll.kt +++ b/pagination/common/src/commonMain/kotlin/dev/inmo/micro_utils/pagination/utils/DoForAll.kt @@ -33,3 +33,8 @@ suspend fun doAllWithCurrentPaging( block ) } + +suspend fun doForAllWithCurrentPaging( + initialPagination: Pagination = FirstPagePagination(), + block: suspend (Pagination) -> PaginationResult +) = doAllWithCurrentPaging(initialPagination, block)