Skip to content

Commit df1a6c8

Browse files
nixos89Nikola Stevanović
authored andcommitted
Converted configuration class for database setup from Java into Kotlin
1 parent 6fca593 commit df1a6c8

File tree

3 files changed

+41
-37
lines changed

3 files changed

+41
-37
lines changed

build.gradle.kts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,15 @@ java.sourceCompatibility = JavaVersion.VERSION_1_8
2525

2626
repositories {
2727
mavenCentral()
28+
jcenter()
2829
}
2930

3031
dependencies {
3132
implementation("org.springframework.boot:spring-boot-starter-web")
33+
implementation("org.jetbrains.exposed:exposed-core:0.29.1")
34+
implementation("org.jetbrains.exposed:exposed-dao:0.29.1")
35+
implementation("org.jetbrains.exposed:exposed-jdbc:0.29.1")
36+
implementation("org.jetbrains.exposed:exposed-java-time:0.29.1")
3237
implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
3338
implementation("org.jetbrains.kotlin:kotlin-reflect")
3439
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

src/main/java/org/example/java_kotlin/config/ToDoConfiguration.java

Lines changed: 0 additions & 37 deletions
This file was deleted.
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.example.java_kotlin.config
2+
3+
import org.springframework.boot.context.properties.ConfigurationProperties
4+
import com.zaxxer.hikari.HikariConfig
5+
import org.flywaydb.core.Flyway
6+
import com.zaxxer.hikari.HikariDataSource
7+
import org.jetbrains.exposed.sql.Database
8+
import org.springframework.beans.factory.annotation.Value
9+
import org.springframework.context.annotation.Bean
10+
import org.springframework.context.annotation.Configuration
11+
import javax.sql.DataSource
12+
13+
@Configuration
14+
@ConfigurationProperties("spring.flyway")
15+
class ToDoConfiguration {
16+
17+
@Bean
18+
fun datasource(
19+
@Value("\${spring.datasource.url}") url: String?,
20+
@Value("\${spring.datasource.username}") username: String?,
21+
@Value("\${spring.datasource.password}") password: String?,
22+
@Value("\${spring.datasource.driverClassName}") driver: String?
23+
): DataSource {
24+
val config = HikariConfig()
25+
val flyway = Flyway.configure().dataSource(url, username, password).load()
26+
flyway.migrate()
27+
config.jdbcUrl = url
28+
config.username = username
29+
config.password = password
30+
config.driverClassName = driver
31+
return HikariDataSource(config)
32+
}
33+
34+
@Bean
35+
fun database(dataSource: HikariDataSource): Database = Database.connect(dataSource)
36+
}

0 commit comments

Comments
 (0)