custom<S, T extends CustomDataType<S>> static method

Literal<T> custom<S, T extends CustomDataType<S>>(
  1. T value,
  2. T fromDatabase(
    1. S
    )
)

Implementation

static Literal<T> custom<S, T extends CustomDataType<S>>(
  T value,
  T Function(S) fromDatabase,
) {
  final backingType = switch (value) {
    CustomDataType<bool> _ => ColumnType.boolean as ColumnType<S>,
    CustomDataType<String> _ => ColumnType.text as ColumnType<S>,
    CustomDataType<int> _ => ColumnType.integer as ColumnType<S>,
    CustomDataType<double> _ => ColumnType.real as ColumnType<S>,
    CustomDataType<Uint8List> _ => ColumnType.blob as ColumnType<S>,
    CustomDataType<DateTime> _ => ColumnType.dateTime as ColumnType<S>,
    _ => throw ArgumentError.value(
        value,
        'value',
        'T in CustomDataType<T> must be String, int, double, bool, or DateTime!',
      ),
  };
  return Literal._(value, CustomExprType._(backingType, fromDatabase));
}