override fun setValue()

in exposed-r2dbc/src/main/kotlin/org/jetbrains/exposed/v1/r2dbc/mappers/BinaryTypeMapper.kt [27:70]


    override fun setValue(
        statement: Statement,
        dialect: DatabaseDialect,
        typeMapping: R2dbcTypeMapping,
        columnType: IColumnType<*>,
        value: Any?,
        index: Int
    ): Boolean {
        if (columnType !is BasicBinaryColumnType && columnType !is BlobColumnType) {
            return false
        }

        if (value == null) {
            statement.bindNull(index - 1, ByteArray::class.java)
            return true
        }

        if (value is InputStream) {
            val type = if (columnType is BlobColumnType) {
                Parameters.`in`(R2dbcType.BLOB, value.readBytes())
            } else {
                Parameters.`in`(R2dbcType.VARBINARY, value.readBytes())
            }

            statement.bind(index - 1, type)
            return true
        }

        if (value is ExposedBlob) {
            if (columnType is BlobColumnType) {
                statement.bind(index - 1, Parameters.`in`(R2dbcType.BLOB, value.bytes))
            } else {
                statement.bind(index - 1, Parameters.`in`(R2dbcType.VARBINARY, value.bytes))
            }
            return true
        }

        if (value is ByteArray) {
            statement.bind(index - 1, value)
            return true
        }

        return false
    }