Proper shutdown

This commit is contained in:
2020-09-30 00:13:16 +02:00
parent 1bc45461c3
commit 69c91ec86a
5 changed files with 35 additions and 21 deletions
+3 -4
View File
@@ -1,13 +1,13 @@
package be.simplenotes.app package be.simplenotes.app
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.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
fun main() { fun main() = startKoin {
startKoin {
modules( modules(
serverModule, serverModule,
persistanceModule, persistanceModule,
@@ -21,5 +21,4 @@ fun main() {
apiModule, apiModule,
jsonModule jsonModule
) )
} }.addShutdownHook()
}
@@ -0,0 +1,12 @@
package be.simplenotes.app.extensions
import org.koin.core.KoinApplication
import kotlin.concurrent.thread
fun KoinApplication.addShutdownHook() {
Runtime.getRuntime().addShutdownHook(
thread(start = false) {
close()
}
)
}
+2 -1
View File
@@ -18,10 +18,11 @@ import org.http4k.server.asServer
import org.koin.core.qualifier.named import org.koin.core.qualifier.named
import org.koin.core.qualifier.qualifier import org.koin.core.qualifier.qualifier
import org.koin.dsl.module import org.koin.dsl.module
import org.koin.dsl.onClose
import org.http4k.server.ServerConfig as Http4kServerConfig import org.http4k.server.ServerConfig as Http4kServerConfig
val serverModule = module { val serverModule = module {
single(createdAtStart = true) { Server(get(), get()).start() } single(createdAtStart = true) { Server(get(), get()).start() } onClose { it?.stop() }
single { get<RoutingHttpHandler>().asServer(get()) } single { get<RoutingHttpHandler>().asServer(get()) }
single<Http4kServerConfig> { single<Http4kServerConfig> {
val config = get<ServerConfig>() val config = get<ServerConfig>()
+1 -1
View File
@@ -5,4 +5,4 @@ rm app/src/main/resources/static/styles*
yarn --cwd css run css-purge \ yarn --cwd css run css-purge \
&& docker build -t hubv/simplenotes:latest . \ && docker build -t hubv/simplenotes:latest . \
# && docker push hubv/simplenotes:latest && docker push hubv/simplenotes:latest
@@ -7,8 +7,10 @@ import be.simplenotes.persistance.users.UserRepositoryImpl
import be.simplenotes.shared.config.DataSourceConfig import be.simplenotes.shared.config.DataSourceConfig
import com.zaxxer.hikari.HikariConfig import com.zaxxer.hikari.HikariConfig
import com.zaxxer.hikari.HikariDataSource import com.zaxxer.hikari.HikariDataSource
import me.liuwj.ktorm.database.* import me.liuwj.ktorm.database.Database
import org.koin.dsl.bind
import org.koin.dsl.module import org.koin.dsl.module
import org.koin.dsl.onClose
import javax.sql.DataSource import javax.sql.DataSource
interface DbMigrations { interface DbMigrations {
@@ -31,7 +33,7 @@ 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<DbMigrations> { DbMigrationsImpl(get(), get()) }
single<DataSource> { hikariDataSource(get()) } single { hikariDataSource(get()) } bind DataSource::class onClose { it?.close() }
single { single {
get<DbMigrations>().migrate() get<DbMigrations>().migrate()
Database.connect(get<DataSource>()) Database.connect(get<DataSource>())