diff --git a/CHANGELOG.md b/CHANGELOG.md index a924ecc06ae..3b6a4c8d4ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * All implementations inside of this library has been updated * `ReadStandardKeyValueRepo` got `keys` method with value parameter * All implementations inside of this library has been updated + * New extensions `withMapper` ## 0.3.3 diff --git a/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/KeyValueMappers.kt b/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/KeyValueMappers.kt index f8c935bf659..b11e3799762 100644 --- a/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/KeyValueMappers.kt +++ b/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/KeyValueMappers.kt @@ -73,6 +73,16 @@ inline fun ReadStandardKeyValueRepo ): ReadStandardKeyValueRepo = MapperReadStandardKeyValueRepo(this, mapper) +@Suppress("NOTHING_TO_INLINE") +inline fun ReadStandardKeyValueRepo.withMapper( + crossinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, + crossinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, + crossinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, + crossinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, +): ReadStandardKeyValueRepo = withMapper( + mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom) +) + open class MapperWriteStandardKeyValueRepo( private val to: WriteStandardKeyValueRepo, mapper: MapperRepo @@ -102,6 +112,16 @@ inline fun WriteStandardKeyValueRepo ): WriteStandardKeyValueRepo = MapperWriteStandardKeyValueRepo(this, mapper) +@Suppress("NOTHING_TO_INLINE") +inline fun WriteStandardKeyValueRepo.withMapper( + crossinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, + crossinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, + crossinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, + crossinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, +): WriteStandardKeyValueRepo = withMapper( + mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom) +) + open class MapperStandardKeyValueRepo( private val to: StandardKeyValueRepo, mapper: MapperRepo @@ -114,3 +134,13 @@ open class MapperStandardKeyValueRepo( inline fun StandardKeyValueRepo.withMapper( mapper: MapperRepo ): StandardKeyValueRepo = MapperStandardKeyValueRepo(this, mapper) + +@Suppress("NOTHING_TO_INLINE") +inline fun StandardKeyValueRepo.withMapper( + crossinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, + crossinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, + crossinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, + crossinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, +): StandardKeyValueRepo = withMapper( + mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom) +) diff --git a/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/OneToManyKeyValueMappers.kt b/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/OneToManyKeyValueMappers.kt index 1e61ae461f5..228b52134cc 100644 --- a/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/OneToManyKeyValueMappers.kt +++ b/repos/common/src/commonMain/kotlin/dev/inmo/micro_utils/repos/mappers/OneToManyKeyValueMappers.kt @@ -71,6 +71,16 @@ inline fun ReadOneToManyKeyValueRepo ): ReadOneToManyKeyValueRepo = MapperReadOneToManyKeyValueRepo(this, mapper) +@Suppress("NOTHING_TO_INLINE") +inline fun ReadOneToManyKeyValueRepo.withMapper( + crossinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, + crossinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, + crossinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, + crossinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, +): ReadOneToManyKeyValueRepo = withMapper( + mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom) +) + open class MapperWriteOneToManyKeyValueRepo( private val to: WriteOneToManyKeyValueRepo, mapper: MapperRepo @@ -105,6 +115,16 @@ inline fun WriteOneToManyKeyValueRepo ): WriteOneToManyKeyValueRepo = MapperWriteOneToManyKeyValueRepo(this, mapper) +@Suppress("NOTHING_TO_INLINE") +inline fun WriteOneToManyKeyValueRepo.withMapper( + crossinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, + crossinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, + crossinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, + crossinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, +): WriteOneToManyKeyValueRepo = withMapper( + mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom) +) + open class MapperOneToManyKeyValueRepo( private val to: OneToManyKeyValueRepo, mapper: MapperRepo @@ -117,3 +137,13 @@ open class MapperOneToManyKeyValueRepo( inline fun OneToManyKeyValueRepo.withMapper( mapper: MapperRepo ): OneToManyKeyValueRepo = MapperOneToManyKeyValueRepo(this, mapper) + +@Suppress("NOTHING_TO_INLINE") +inline fun OneToManyKeyValueRepo.withMapper( + crossinline keyFromToTo: suspend FromKey.() -> ToKey = { this as ToKey }, + crossinline valueFromToTo: suspend FromValue.() -> ToValue = { this as ToValue }, + crossinline keyToToFrom: suspend ToKey.() -> FromKey = { this as FromKey }, + crossinline valueToToFrom: suspend ToValue.() -> FromValue = { this as FromValue }, +): OneToManyKeyValueRepo = withMapper( + mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom) +)