DatabaseData.fromUserValue constructor

DatabaseData.fromUserValue({
  1. required dynamic value,
  2. required String key,
  3. required QueryParams queryParams,
  4. required DateTime dateTime,
})

Create a new instnace of DatabaseData from user provided values.

Throw UnsupportedDataType if the type of the value is not supported.

Implementation

factory DatabaseData.fromUserValue({
  required dynamic value,
  required String key,
  required QueryParams queryParams,
  required DateTime dateTime,
}) {
  DataType dataType;
  String? cacheData;

  if (value == null) {
    dataType = DataType.nullType;
  } else if (value is int) {
    dataType = DataType.intType;
    cacheData = value.toString();
  } else if (value is double) {
    dataType = DataType.doubleType;
    cacheData = value.toString();
  } else if (value is String) {
    dataType = DataType.stringType;
    cacheData = value;
  } else if (value is bool) {
    dataType = DataType.boolType;
    cacheData = value.toString();
  } else if (value is List) {
    dataType = DataType.listType;
    try {
      cacheData = jsonEncode(value);
    } on JsonUnsupportedObjectError {
      throw UnsupportedDataType();
    }
  } else if (value is Map) {
    dataType = DataType.mapType;
    try {
      cacheData = jsonEncode(value);
    } on JsonUnsupportedObjectError {
      throw UnsupportedDataType();
    }
  } else {
    throw UnsupportedDataType();
  }

  return DatabaseData(
    key: key,
    queryParams: queryParams,
    type: dataType,
    value: cacheData,
    updatedAt: dateTime,
    lastUsedAt: dateTime,
    useCount: 0,
  );
}