48 lines
1.8 KiB
Kotlin
48 lines
1.8 KiB
Kotlin
package be.simplenotes.persistance
|
|
|
|
import be.simplenotes.domain.usecases.repositories.NoteRepository
|
|
import be.simplenotes.domain.usecases.repositories.UserRepository
|
|
import be.simplenotes.persistance.converters.NoteConverter
|
|
import be.simplenotes.persistance.converters.NoteConverterImpl
|
|
import be.simplenotes.persistance.converters.UserConverter
|
|
import be.simplenotes.persistance.converters.UserConverterImpl
|
|
import be.simplenotes.persistance.notes.NoteRepositoryImpl
|
|
import be.simplenotes.persistance.users.UserRepositoryImpl
|
|
import be.simplenotes.shared.config.DataSourceConfig
|
|
import com.zaxxer.hikari.HikariConfig
|
|
import com.zaxxer.hikari.HikariDataSource
|
|
import me.liuwj.ktorm.database.Database
|
|
import org.koin.dsl.bind
|
|
import org.koin.dsl.module
|
|
import org.koin.dsl.onClose
|
|
import javax.sql.DataSource
|
|
|
|
private fun hikariDataSource(conf: DataSourceConfig): HikariDataSource {
|
|
val hikariConfig = HikariConfig().also {
|
|
it.jdbcUrl = conf.jdbcUrl
|
|
it.driverClassName = conf.driverClassName
|
|
it.username = conf.username
|
|
it.password = conf.password
|
|
it.maximumPoolSize = conf.maximumPoolSize
|
|
it.connectionTimeout = conf.connectionTimeout
|
|
}
|
|
return HikariDataSource(hikariConfig)
|
|
}
|
|
|
|
val migrationModule = module {
|
|
single<DbMigrations> { DbMigrationsImpl(get(), get()) }
|
|
}
|
|
|
|
val persistanceModule = module {
|
|
single<NoteConverter> { NoteConverterImpl() }
|
|
single<UserConverter> { UserConverterImpl() }
|
|
single<UserRepository> { UserRepositoryImpl(get(), get()) }
|
|
single<NoteRepository> { NoteRepositoryImpl(get(), get()) }
|
|
single { hikariDataSource(get()) } bind DataSource::class onClose { it?.close() }
|
|
single {
|
|
get<DbMigrations>().migrate()
|
|
Database.connect(get<DataSource>())
|
|
}
|
|
single<DbHealthCheck> { DbHealthCheckImpl(get(), get()) }
|
|
}
|