sqlLiteral method
Sql
sqlLiteral(
- 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}.',
),
};