Configure redis for ktor/koin
This commit is contained in:
@@ -2,10 +2,14 @@ package eventDemo.configuration.injection
|
||||
|
||||
import org.koin.dsl.module
|
||||
|
||||
val appKoinModule =
|
||||
fun appKoinModule(config: Configuration) =
|
||||
module {
|
||||
configureDIBusiness()
|
||||
configureDIInfrastructure()
|
||||
configureDIInfrastructure(config.redisUrl)
|
||||
configureDILibs()
|
||||
configureDICommandActions()
|
||||
}
|
||||
|
||||
data class Configuration(
|
||||
val redisUrl: String,
|
||||
)
|
||||
|
||||
@@ -14,8 +14,13 @@ import eventDemo.libs.event.projection.SnapshotConfig
|
||||
import org.koin.core.module.Module
|
||||
import org.koin.core.module.dsl.singleOf
|
||||
import org.koin.dsl.bind
|
||||
import redis.clients.jedis.JedisPool
|
||||
|
||||
fun Module.configureDIInfrastructure(redisUrl: String) {
|
||||
single {
|
||||
JedisPool(redisUrl)
|
||||
}
|
||||
|
||||
fun Module.configureDIInfrastructure() {
|
||||
singleOf(::GameEventBusInMemory) bind GameEventBus::class
|
||||
singleOf(::GameEventStoreInMemory) bind GameEventStore::class
|
||||
singleOf(::GameProjectionBusInMemory) bind GameProjectionBus::class
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package eventDemo.configuration.ktor
|
||||
|
||||
import eventDemo.configuration.injection.Configuration
|
||||
import eventDemo.configuration.injection.appKoinModule
|
||||
import io.ktor.server.application.Application
|
||||
import io.ktor.server.application.install
|
||||
@@ -9,6 +10,8 @@ import org.koin.logger.slf4jLogger
|
||||
fun Application.configureKoin() {
|
||||
install(Koin) {
|
||||
slf4jLogger()
|
||||
modules(appKoinModule)
|
||||
|
||||
val redisUrl = environment.config.propertyOrNull("redis.url")?.getString() ?: error("You must set the redis.url")
|
||||
modules(appKoinModule(Configuration(redisUrl)))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user