From 36ed678c5aa5b9a46e187673633d71c4ff1fd6b3 Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Fri, 26 Feb 2021 23:00:29 +0100 Subject: [PATCH] Add disconnect method --- .../fr/postgresjson/connexion/Connection.kt | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/fr/postgresjson/connexion/Connection.kt b/src/main/kotlin/fr/postgresjson/connexion/Connection.kt index 27a60f4..e648163 100644 --- a/src/main/kotlin/fr/postgresjson/connexion/Connection.kt +++ b/src/main/kotlin/fr/postgresjson/connexion/Connection.kt @@ -25,17 +25,26 @@ class Connection( private val host: String = "localhost", private val port: Int = 5432 ) : Executable { - private lateinit var connection: ConnectionPool + private var connection: ConnectionPool? = null private val serializer = Serializer() private val logger: Logger? by LoggerDelegate() internal fun connect(): ConnectionPool { - if (!::connection.isInitialized || !connection.isConnected()) { - connection = PostgreSQLConnectionBuilder.createConnectionPool( - "jdbc:postgresql://$host:$port/$database?user=$username&password=$password" - ) + return connection.let { connectionPool -> + if (connectionPool == null || !connectionPool.isConnected()) { + PostgreSQLConnectionBuilder.createConnectionPool( + "jdbc:postgresql://$host:$port/$database?user=$username&password=$password" + ).also { + connection = it + } + } else { + connectionPool + } } - return connection + } + + fun disconnect() { + connection?.run { disconnect() } } fun inTransaction(f: (Connection) -> CompletableFuture) = connect().inTransaction(f)