NonNullableColumnWithTransform

A column type that handles the transformation of a nullable database column into a non-nullable Kotlin type.

Unlike NullableColumnWithTransform, which maps null database values to null on the Kotlin side, this type allows the transformer to map a null from the database to a concrete non-null value (e.g., an empty string, a default object, a sentinel value, etc.).

This enables the use-case where a nullable DB column is exposed as a non-nullable property in Kotlin, with a "special value" representing the null state.

For example:

object Users : Table() {
val description = text("description")
.nullable()
.nonNullTransform(
wrap = { it?.trim()?.ifEmpty { null } ?: "" },
unwrap = { if (it.isEmpty()) null else it }
)
}

Here the DB column remains nullable, but the Kotlin type is String (non-nullable). A null in the database maps to "" on the Kotlin side, and an empty string maps back to null when written.

Parameters

delegate

The original column's IColumnType

transformer

Instance of ColumnTransformer that handles null → non-null mapping

Type Parameters

Wrapped

The non-nullable type to which the column value is transformed

Unwrapped

The nullable type of the underlying database column

Constructors

Link copied to clipboard
constructor(delegate: IColumnType<Unwrapped & Any>, transformer: ColumnTransformer<Unwrapped, Wrapped>)

Properties

Link copied to clipboard
Link copied to clipboard

Returns true if this is an auto-increment column, false otherwise.

Link copied to clipboard
open override var nullable: Boolean

Returns true if the column type is nullable, false otherwise.

Link copied to clipboard

Gets the original column type that this column with transformation wraps around.

Link copied to clipboard

Functions

Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard

Returns the String representation of the specified non-null value when value is set as the default for the column.

Link copied to clipboard

Returns the SQL representation of the specified non-null value, for this column type.

Link copied to clipboard
open override fun notNullValueToDB(value: Wrapped & Any): Any

Returns an object compatible with the database, from the specified non-null value, for this column type.

Link copied to clipboard
open override fun parameterMarker(value: Wrapped?): String

Defines the appearance of parameter markers in prepared SQL statements.

Link copied to clipboard
open override fun readObject(rs: RowApi, index: Int): Any?

Returns the object at the specified index in the rs.

Link copied to clipboard
open override fun setParameter(stmt: PreparedStatementApi, index: Int, value: Any?)

Sets the value at the specified index into the stmt.

Link copied to clipboard
open override fun sqlType(): String

Returns the SQL type of this column.

Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
open override fun unwrapRecursive(value: Wrapped?): Any?

Recursively unwraps the given value by applying the delegate's transformation.

Link copied to clipboard

Function checks that provided value is suites the column type and throws IllegalArgumentException otherwise. value can be of any type (including Expression)

Link copied to clipboard

Returns the String representation of the specified value when value is set as the default for the column. If the value is null and the column is not nullable, an exception will be thrown. Used for metadata default value comparison.

Link copied to clipboard
open override fun valueFromDB(value: Any): Wrapped?

Converts the specified value (from the database) to an object of the appropriated type, for this column type. Default implementation returns the same instance.

Link copied to clipboard

Transforms a value read from the database, handling null values by mapping them to a non-nullable Wrapped value via the transformer.

Link copied to clipboard
open override fun valueToDB(value: Wrapped?): Any?

Returns an object compatible with the database, from the specified value, for this column type.

Link copied to clipboard
open override fun valueToString(value: Wrapped?): String

Returns the SQL representation of the specified value, for this column type. If the value is null and the column is not nullable, an exception will be thrown. Used when generating an SQL statement and when logging that statement.