Added HikariCP as connection pool manager for efficient database connection management.
This commit is contained in:
parent
21a3f61152
commit
c62c233778
@ -32,6 +32,7 @@ dependencies {
|
|||||||
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
implementation("com.squareup.okhttp3:okhttp:4.12.0")
|
||||||
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
|
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.1")
|
||||||
implementation("org.slf4j:slf4j-api:2.0.16")
|
implementation("org.slf4j:slf4j-api:2.0.16")
|
||||||
|
implementation("com.zaxxer:HikariCP:6.0.0")
|
||||||
testImplementation("io.ktor:ktor-server-test-host-jvm")
|
testImplementation("io.ktor:ktor-server-test-host-jvm")
|
||||||
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
|
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
|
||||||
}
|
}
|
||||||
|
@ -84,5 +84,5 @@ data class DatabaseConfig(
|
|||||||
val user: String,
|
val user: String,
|
||||||
val password: String
|
val password: String
|
||||||
) {
|
) {
|
||||||
val dbUrl = "jdbc:oracle:thin:@$host:$port:$name"
|
val url = "jdbc:oracle:thin:@$host:$port:$name"
|
||||||
}
|
}
|
25
src/main/kotlin/net/ipksindia/dao/DatabaseFactory.kt
Normal file
25
src/main/kotlin/net/ipksindia/dao/DatabaseFactory.kt
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package net.ipksindia.dao
|
||||||
|
|
||||||
|
import com.zaxxer.hikari.HikariConfig
|
||||||
|
import com.zaxxer.hikari.HikariDataSource
|
||||||
|
import net.ipksindia.config.AppConfig
|
||||||
|
import java.sql.Connection
|
||||||
|
|
||||||
|
class DatabaseFactory private constructor() {
|
||||||
|
private val dataSource: HikariDataSource
|
||||||
|
|
||||||
|
init {
|
||||||
|
val config = HikariConfig()
|
||||||
|
config.jdbcUrl = AppConfig.databaseConfig.url
|
||||||
|
config.username = AppConfig.databaseConfig.user
|
||||||
|
config.password = AppConfig.databaseConfig.password
|
||||||
|
config.maximumPoolSize = 5
|
||||||
|
dataSource = HikariDataSource(config)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getConnection(): Connection = dataSource.connection
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
val instance = DatabaseFactory()
|
||||||
|
}
|
||||||
|
}
|
@ -1,17 +1,11 @@
|
|||||||
package net.ipksindia.dao
|
package net.ipksindia.dao
|
||||||
|
|
||||||
import model.TransactionRequest
|
import model.TransactionRequest
|
||||||
import net.ipksindia.config.AppConfig
|
|
||||||
import java.sql.Date
|
import java.sql.Date
|
||||||
import java.sql.DriverManager
|
|
||||||
import java.sql.ResultSet
|
import java.sql.ResultSet
|
||||||
|
|
||||||
class TransactionDao() {
|
class TransactionDao() {
|
||||||
|
|
||||||
private val dbUrl = AppConfig.databaseConfig.dbUrl
|
|
||||||
private val dbUser = AppConfig.databaseConfig.user
|
|
||||||
private val dbPassword = AppConfig.databaseConfig.password
|
|
||||||
|
|
||||||
private val singleTransactionRequestQuery = """
|
private val singleTransactionRequestQuery = """
|
||||||
SELECT
|
SELECT
|
||||||
txn_no,
|
txn_no,
|
||||||
@ -69,8 +63,7 @@ class TransactionDao() {
|
|||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
|
||||||
fun updateSuccessTransaction(request: TransactionRequest, transferQueueNumber: String, neftQueueNumber: String) {
|
fun updateSuccessTransaction(request: TransactionRequest, transferQueueNumber: String, neftQueueNumber: String) {
|
||||||
DriverManager
|
DatabaseFactory.instance.getConnection()
|
||||||
.getConnection(dbUrl, dbUser, dbPassword)
|
|
||||||
.use { connection ->
|
.use { connection ->
|
||||||
connection
|
connection
|
||||||
.prepareStatement(transactionUpdateQuery)
|
.prepareStatement(transactionUpdateQuery)
|
||||||
@ -100,8 +93,8 @@ class TransactionDao() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getTransactionRequest(transactionNumber: String): TransactionRequest? {
|
fun getTransactionRequest(transactionNumber: String): TransactionRequest? {
|
||||||
return DriverManager
|
return DatabaseFactory.instance
|
||||||
.getConnection(dbUrl, dbUser, dbPassword)
|
.getConnection()
|
||||||
.use { connection ->
|
.use { connection ->
|
||||||
connection
|
connection
|
||||||
.prepareStatement(singleTransactionRequestQuery)
|
.prepareStatement(singleTransactionRequestQuery)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user