From 6916391a32f3bf0c1ffdb7eebfb7b71dbe64f908 Mon Sep 17 00:00:00 2001 From: spand Date: Thu, 13 Jul 2023 21:50:28 +0200 Subject: [PATCH] chore: Add blobParam function. (#1672) * Add blobParam function. * Review changes. --- .../src/main/kotlin/org/jetbrains/exposed/sql/Op.kt | 4 ++++ .../org/jetbrains/exposed/sql/tests/shared/DDLTests.kt | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Op.kt b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Op.kt index 6add62b5d0..2e600aef38 100644 --- a/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Op.kt +++ b/exposed-core/src/main/kotlin/org/jetbrains/exposed/sql/Op.kt @@ -2,6 +2,7 @@ package org.jetbrains.exposed.sql import org.jetbrains.exposed.dao.id.EntityID import org.jetbrains.exposed.sql.SqlExpressionBuilder.wrap +import org.jetbrains.exposed.sql.statements.api.ExposedBlob import org.jetbrains.exposed.sql.vendors.* import java.math.BigDecimal @@ -762,6 +763,9 @@ fun stringParam(value: String): Expression = QueryParameter(value, TextC /** Returns the specified [value] as a decimal query parameter. */ fun decimalParam(value: BigDecimal): Expression = QueryParameter(value, DecimalColumnType(value.precision(), value.scale())) +/** Returns the specified [value] as a blob query parameter. */ +fun blobParam(value: ExposedBlob): Expression = QueryParameter(value, BlobColumnType()) + // Misc. /** diff --git a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/DDLTests.kt b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/DDLTests.kt index fcc4f988d3..a23dcc4429 100644 --- a/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/DDLTests.kt +++ b/exposed-tests/src/test/kotlin/org/jetbrains/exposed/sql/tests/shared/DDLTests.kt @@ -469,6 +469,10 @@ class DDLTests : DatabaseTestsBase() { it[t.b] = longBlob } get (t.id) + val id3 = t.insert { + it[t.b] = blobParam(ExposedBlob(shortBytes)) + } get (t.id) + val readOn1 = t.select { t.id eq id1 }.first()[t.b] val text1 = String(readOn1.bytes) val text2 = readOn1.inputStream.bufferedReader().readText() @@ -482,6 +486,9 @@ class DDLTests : DatabaseTestsBase() { assertTrue(longBytes.contentEquals(bytes1)) assertTrue(longBytes.contentEquals(bytes2)) + + val bytes3 = t.select { t.id eq id3 }.first()[t.b].inputStream.readBytes() + assertTrue(shortBytes.contentEquals(bytes3)) } }