Unload bootstraping modules after startup
This commit is contained in:
parent
69c91ec86a
commit
dcc70aab3a
@ -6,7 +6,7 @@ import be.simplenotes.shared.config.ServerConfig
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
object Config {
|
class Config {
|
||||||
//region Config loading
|
//region Config loading
|
||||||
private val properties: Properties = javaClass
|
private val properties: Properties = javaClass
|
||||||
.getResource("/application.properties")
|
.getResource("/application.properties")
|
||||||
|
|||||||
@ -3,22 +3,29 @@ package be.simplenotes.app
|
|||||||
import be.simplenotes.app.extensions.addShutdownHook
|
import be.simplenotes.app.extensions.addShutdownHook
|
||||||
import be.simplenotes.app.modules.*
|
import be.simplenotes.app.modules.*
|
||||||
import be.simplenotes.domain.domainModule
|
import be.simplenotes.domain.domainModule
|
||||||
|
import be.simplenotes.persistance.migrationModule
|
||||||
import be.simplenotes.persistance.persistanceModule
|
import be.simplenotes.persistance.persistanceModule
|
||||||
import be.simplenotes.search.searchModule
|
import be.simplenotes.search.searchModule
|
||||||
import org.koin.core.context.startKoin
|
import org.koin.core.context.startKoin
|
||||||
|
import org.koin.core.context.unloadKoinModules
|
||||||
|
|
||||||
fun main() = startKoin {
|
fun main() {
|
||||||
modules(
|
startKoin {
|
||||||
serverModule,
|
modules(
|
||||||
persistanceModule,
|
serverModule,
|
||||||
configModule,
|
persistanceModule,
|
||||||
baseModule,
|
migrationModule,
|
||||||
userModule,
|
configModule,
|
||||||
noteModule,
|
baseModule,
|
||||||
settingsModule,
|
userModule,
|
||||||
domainModule,
|
noteModule,
|
||||||
searchModule,
|
settingsModule,
|
||||||
apiModule,
|
domainModule,
|
||||||
jsonModule
|
searchModule,
|
||||||
)
|
apiModule,
|
||||||
}.addShutdownHook()
|
jsonModule
|
||||||
|
)
|
||||||
|
}.addShutdownHook()
|
||||||
|
|
||||||
|
unloadKoinModules(listOf(migrationModule, configModule))
|
||||||
|
}
|
||||||
|
|||||||
@ -2,9 +2,17 @@ package be.simplenotes.app.modules
|
|||||||
|
|
||||||
import be.simplenotes.app.Config
|
import be.simplenotes.app.Config
|
||||||
import org.koin.dsl.module
|
import org.koin.dsl.module
|
||||||
|
import org.koin.dsl.onClose
|
||||||
|
|
||||||
val configModule = module {
|
val configModule = module {
|
||||||
single { Config.dataSourceConfig }
|
single { Config() } onClose {
|
||||||
single { Config.jwtConfig }
|
println("Unloaded config")
|
||||||
single { Config.serverConfig }
|
println("Unloaded config")
|
||||||
|
println("Unloaded config")
|
||||||
|
println("Unloaded config")
|
||||||
|
}
|
||||||
|
|
||||||
|
single { get<Config>().dataSourceConfig }
|
||||||
|
single { get<Config>().jwtConfig }
|
||||||
|
single { get<Config>().serverConfig }
|
||||||
}
|
}
|
||||||
|
|||||||
@ -29,10 +29,13 @@ private fun hikariDataSource(conf: DataSourceConfig): HikariDataSource {
|
|||||||
return HikariDataSource(hikariConfig)
|
return HikariDataSource(hikariConfig)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val migrationModule = module {
|
||||||
|
single<DbMigrations> { DbMigrationsImpl(get(), get()) }
|
||||||
|
}
|
||||||
|
|
||||||
val persistanceModule = module {
|
val persistanceModule = module {
|
||||||
single<UserRepository> { UserRepositoryImpl(get()) }
|
single<UserRepository> { UserRepositoryImpl(get()) }
|
||||||
single<NoteRepository> { NoteRepositoryImpl(get()) }
|
single<NoteRepository> { NoteRepositoryImpl(get()) }
|
||||||
single<DbMigrations> { DbMigrationsImpl(get(), get()) }
|
|
||||||
single { hikariDataSource(get()) } bind DataSource::class onClose { it?.close() }
|
single { hikariDataSource(get()) } bind DataSource::class onClose { it?.close() }
|
||||||
single {
|
single {
|
||||||
get<DbMigrations>().migrate()
|
get<DbMigrations>().migrate()
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import be.simplenotes.domain.model.*
|
|||||||
import be.simplenotes.domain.usecases.repositories.NoteRepository
|
import be.simplenotes.domain.usecases.repositories.NoteRepository
|
||||||
import be.simplenotes.domain.usecases.repositories.UserRepository
|
import be.simplenotes.domain.usecases.repositories.UserRepository
|
||||||
import be.simplenotes.persistance.DbMigrations
|
import be.simplenotes.persistance.DbMigrations
|
||||||
|
import be.simplenotes.persistance.migrationModule
|
||||||
import be.simplenotes.persistance.persistanceModule
|
import be.simplenotes.persistance.persistanceModule
|
||||||
import be.simplenotes.shared.config.DataSourceConfig
|
import be.simplenotes.shared.config.DataSourceConfig
|
||||||
import me.liuwj.ktorm.database.*
|
import me.liuwj.ktorm.database.*
|
||||||
@ -27,7 +28,7 @@ internal class NoteRepositoryImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val koinApp = koinApplication {
|
private val koinApp = koinApplication {
|
||||||
modules(persistanceModule, testModule)
|
modules(persistanceModule, migrationModule, testModule)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun dataSourceConfig() = DataSourceConfig(
|
private fun dataSourceConfig() = DataSourceConfig(
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package be.simplenotes.persistance.users
|
|||||||
import be.simplenotes.domain.model.User
|
import be.simplenotes.domain.model.User
|
||||||
import be.simplenotes.domain.usecases.repositories.UserRepository
|
import be.simplenotes.domain.usecases.repositories.UserRepository
|
||||||
import be.simplenotes.persistance.DbMigrations
|
import be.simplenotes.persistance.DbMigrations
|
||||||
|
import be.simplenotes.persistance.migrationModule
|
||||||
import be.simplenotes.persistance.persistanceModule
|
import be.simplenotes.persistance.persistanceModule
|
||||||
import be.simplenotes.shared.config.DataSourceConfig
|
import be.simplenotes.shared.config.DataSourceConfig
|
||||||
import me.liuwj.ktorm.database.*
|
import me.liuwj.ktorm.database.*
|
||||||
@ -28,7 +29,7 @@ internal class UserRepositoryImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val koinApp = koinApplication {
|
private val koinApp = koinApplication {
|
||||||
modules(persistanceModule, testModule)
|
modules(persistanceModule, migrationModule, testModule)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun dataSourceConfig() = DataSourceConfig(
|
private fun dataSourceConfig() = DataSourceConfig(
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user