diff --git a/src/main/kotlin/fr/postgresjson/connexion/Connection.kt b/src/main/kotlin/fr/postgresjson/connexion/Connection.kt index f646ed9..d1be719 100644 --- a/src/main/kotlin/fr/postgresjson/connexion/Connection.kt +++ b/src/main/kotlin/fr/postgresjson/connexion/Connection.kt @@ -1,11 +1,13 @@ package fr.postgresjson.connexion import com.fasterxml.jackson.core.type.TypeReference +import com.github.jasync.sql.db.QueryResult import com.github.jasync.sql.db.pool.ConnectionPool import com.github.jasync.sql.db.postgresql.PostgreSQLConnection import com.github.jasync.sql.db.postgresql.PostgreSQLConnectionBuilder import fr.postgresjson.Serializer import fr.postgresjson.entity.EntityI +import java.util.concurrent.CompletableFuture class Connection( private val database: String, @@ -50,6 +52,10 @@ class Connection( inline fun ?>> select(sql: String, values: List = emptyList()): R = select(sql, object : TypeReference() {}, values) + fun exec(sql: String, values: List = emptyList()): CompletableFuture { + return connect().sendPreparedStatement(sql, compileArgs(values)) + } + private fun compileArgs(values: List): List { return values.map { if (it is EntityI<*>) { diff --git a/src/test/kotlin/fr/postgresjson/ConnectionTest.kt b/src/test/kotlin/fr/postgresjson/ConnectionTest.kt index 5a7c213..97f016b 100644 --- a/src/test/kotlin/fr/postgresjson/ConnectionTest.kt +++ b/src/test/kotlin/fr/postgresjson/ConnectionTest.kt @@ -1,5 +1,6 @@ package fr.postgresjson +import com.github.jasync.sql.db.util.isCompleted import fr.postgresjson.connexion.Connection import fr.postgresjson.entity.IdEntity import org.junit.jupiter.api.Assertions.* @@ -63,4 +64,12 @@ class ConnectionTest(): TestAbstract() { assertTrue(obj!!.id == 1) assertTrue(obj.name == "myName") } + + @Test + fun callExec() { + val o = ObjTest("myName") + val future = connection.exec("select json_build_object('id', 1, 'name', ?::json->>'name')", listOf(o)) + future.join() + assertTrue(future.isCompleted) + } } \ No newline at end of file