Proper shutdown
This commit is contained in:
parent
1bc45461c3
commit
69c91ec86a
@ -1,25 +1,24 @@
|
|||||||
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,
|
configModule,
|
||||||
configModule,
|
baseModule,
|
||||||
baseModule,
|
userModule,
|
||||||
userModule,
|
noteModule,
|
||||||
noteModule,
|
settingsModule,
|
||||||
settingsModule,
|
domainModule,
|
||||||
domainModule,
|
searchModule,
|
||||||
searchModule,
|
apiModule,
|
||||||
apiModule,
|
jsonModule
|
||||||
jsonModule
|
)
|
||||||
)
|
}.addShutdownHook()
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
12
app/src/main/kotlin/extensions/KoinExtensions.kt
Normal file
12
app/src/main/kotlin/extensions/KoinExtensions.kt
Normal file
@ -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()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
@ -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>()
|
||||||
|
|||||||
@ -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>())
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user