37 lines
1.3 KiB
Kotlin
37 lines
1.3 KiB
Kotlin
package be.simplenotes.persistance
|
|
|
|
import be.simplenotes.domain.usecases.repositories.NoteRepository
|
|
import be.simplenotes.domain.usecases.repositories.UserRepository
|
|
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.*
|
|
import org.koin.dsl.module
|
|
import javax.sql.DataSource
|
|
|
|
interface DbMigrations {
|
|
fun migrate()
|
|
}
|
|
|
|
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 persistanceModule = module {
|
|
single<UserRepository> { UserRepositoryImpl(get()) }
|
|
single<NoteRepository> { NoteRepositoryImpl(get()) }
|
|
single<DbMigrations> { DbMigrationsImpl(get(), get()) }
|
|
single<DataSource> { hikariDataSource(get()) }
|
|
single { Database.connect(get<DataSource>()) }
|
|
}
|