deserializeValue method

dynamic deserializeValue(
  1. dynamic value,
  2. ColumnType type
)

Deserialize a database value to Dart type.

Implementation

dynamic deserializeValue(dynamic value, ColumnType type) {
  if (value == null) return null;

  switch (type) {
    case ColumnType.dateTime:
      if (value is String) {
        return DateTime.parse(value);
      }
      return value;

    case ColumnType.date:
      if (value is String) {
        return DateTime.parse(value);
      }
      return value;

    case ColumnType.json:
      // JSON values are returned as parsed objects by PostgreSQL but as
      // strings by MySQL/SQLite. Try to parse strings as JSON.
      if (value is String) {
        try {
          return jsonDecode(value);
        } catch (_) {
          return value;
        }
      }
      return value;

    case ColumnType.boolean:
      if (value is int) {
        return value != 0;
      }
      return value;

    default:
      return value;
  }
}