in aws-datastore/src/main/java/com/amplifyframework/datastore/storage/sqlite/SQLiteModelFieldTypeConverter.java [97:142]
public static Object convertRawValueToTarget(
@Nullable final Object value,
@NonNull final JavaFieldType fieldType,
@NonNull Gson gson
) {
if (value == null) {
return null;
}
Objects.requireNonNull(fieldType);
Objects.requireNonNull(gson);
switch (fieldType) {
case INTEGER:
case LONG:
case FLOAT:
case DOUBLE:
case STRING:
// these types require no special treatment
return value;
case BOOLEAN:
boolean booleanValue = (boolean) value;
return booleanValue ? 1L : 0L;
case MODEL:
return value instanceof Map ? ((Map<?, ?>) value).get("id") : ((Model) value).getId();
case ENUM:
return value instanceof String ? value : ((Enum<?>) value).name();
case CUSTOM_TYPE:
return gson.toJson(value);
case DATE:
return value instanceof String ? value : ((Temporal.Date) value).format();
case DATE_TIME:
return value instanceof String ? value : ((Temporal.DateTime) value).format();
case TIME:
return value instanceof String ? value : ((Temporal.Time) value).format();
case TIMESTAMP:
if (value instanceof Integer) {
return ((Integer) value).longValue();
} else if (value instanceof Long) {
return value;
}
return ((Temporal.Timestamp) value).getSecondsSinceEpoch();
default:
LOGGER.warn(String.format("Field of type %s is not supported. Fallback to null.", fieldType));
return null;
}
}