41 lines
1.9 KiB
Kotlin
41 lines
1.9 KiB
Kotlin
package be.vandewalleh
|
|
|
|
import be.vandewalleh.auth.AuthenticationModule
|
|
import be.vandewalleh.auth.SimpleJWT
|
|
import be.vandewalleh.extensions.ApplicationBuilder
|
|
import be.vandewalleh.factories.configurationFactory
|
|
import be.vandewalleh.factories.dataSourceFactory
|
|
import be.vandewalleh.factories.databaseFactory
|
|
import be.vandewalleh.factories.simpleJwtFactory
|
|
import be.vandewalleh.features.*
|
|
import be.vandewalleh.services.NoteService
|
|
import be.vandewalleh.services.UserService
|
|
import org.kodein.di.Kodein
|
|
import org.kodein.di.generic.*
|
|
import org.slf4j.LoggerFactory
|
|
|
|
val mainModule = Kodein.Module("main") {
|
|
bind() from singleton { NoteService(instance()) }
|
|
bind() from singleton { UserService(instance(), instance()) }
|
|
|
|
bind() from singleton { configurationFactory() }
|
|
|
|
bind() from setBinding<ApplicationBuilder>()
|
|
bind<ApplicationBuilder>().inSet() with singleton { ErrorHandler() }
|
|
bind<ApplicationBuilder>().inSet() with singleton { ContentNegotiationFeature() }
|
|
bind<ApplicationBuilder>().inSet() with singleton { CorsFeature(instance<Config>().server.cors) }
|
|
bind<ApplicationBuilder>().inSet() with singleton { AuthenticationModule(instance(tag = "auth")) }
|
|
bind<ApplicationBuilder>().inSet() with singleton { MigrationHook(instance()) }
|
|
bind<ApplicationBuilder>().inSet() with singleton { ShutdownDatabaseConnection(instance()) }
|
|
|
|
bind<SimpleJWT>(tag = "auth") with singleton { simpleJwtFactory(instance<Config>().jwt.auth) }
|
|
bind<SimpleJWT>(tag = "refresh") with singleton { simpleJwtFactory(instance<Config>().jwt.refresh) }
|
|
|
|
bind() from singleton { LoggerFactory.getLogger("Application") }
|
|
bind() from singleton { dataSourceFactory(instance<Config>().database) }
|
|
bind() from singleton { databaseFactory(instance()) }
|
|
bind() from singleton { Migration(instance()) }
|
|
|
|
bind<PasswordHash>() with singleton { BcryptPasswordHash() }
|
|
}
|