sqlLiteral method

Sql sqlLiteral(
  1. T? value
)

Implementation

Sql sqlLiteral(T? value) => switch (value) {
  String() => Sql.text(value),
  Enum() => Sql.text(value.name),
  int() || double() || bool() => RawSql(value.toString()),
  DateTime() => RawSql('"${value.toIso8601String()}"'),
  Map<String, dynamic>() || List<dynamic>() => Sql.join([
    Sql.text(jsonEncode(const JsonDataCodec().encodeDynamic(value))),
    RawSql('::jsonb'),
  ]),
  DataObject() => Sql.text(jsonEncode(value.toJson())) + RawSql('::jsonb'),
  Geometry() => Sql.function('ST_GeogFromWKB', [
    RawSql('\'\\x') +
        RawSql(value.toEWKB().toHexString()) +
        RawSql('\'::bytea'),
  ]),
  null => RawSql('NULL'),
  _ => throw Exception(
    'Cannot provide SQL literal for value of type ${value.runtimeType}.',
  ),
};