import 'package:parse_server_sdk_flutter/parse_server_sdk.dart'; class Meal { late String? objectId; late String value; late String? source; late String? category; late String? portionType; late double? carbsRatio; late double? portionSize; late double? carbsPerPortion; late String? portionSizeAccuracy; late String? carbsRatioAccuracy; late int? delayedBolusDuration; late double? delayedBolusRate; late String? notes; Meal(ParseObject object) { objectId = object.get('objectId'); value = object.get('value')!; source = object.get('source') != null ? object.get('source')!.get('objectId') : null; category = object.get('category') != null ? object.get('category')!.get('objectId') : null; portionType = object.get('portionType') != null ? object.get('portionType')!.get('objectId') : null; carbsRatio = object.get('carbsRatio') != null ? object.get('carbsRatio')!.toDouble() : null; portionSize = object.get('portionSize') != null ? object.get('portionSize')!.toDouble() : null; carbsPerPortion = object.get('carbsPerPortion') != null ? object.get('carbsPerPortion')!.toDouble() : null; portionSizeAccuracy = object.get('portionSizeAccuracy') != null ? object .get('portionSizeAccuracy')! .get('objectId') : null; carbsRatioAccuracy = object.get('carbsRatioAccuracy') != null ? object.get('carbsRatioAccuracy')!.get('objectId') : null; delayedBolusDuration = object.get('delayedBolusDuration') != null ? object.get('delayedBolusDuration')!.toInt() : null; delayedBolusRate = object.get('delayedBolusRate') != null ? object.get('delayedBolusRate')!.toDouble() : null; notes = object.get('notes'); } static Future> fetchAll() async { QueryBuilder query = QueryBuilder(ParseObject('Meal')); final ParseResponse apiResponse = await query.query(); if (apiResponse.success && apiResponse.results != null) { return apiResponse.results!.map((e) => Meal(e as ParseObject)).toList(); } else { return []; } } static Future get(String objectId) async { QueryBuilder query = QueryBuilder(ParseObject('Meal')) ..whereEqualTo('objectId', objectId); final ParseResponse apiResponse = await query.query(); if (apiResponse.success && apiResponse.results != null) { return Meal(apiResponse.result.first); } } static Future save({ required String value, String? source, String? category, String? portionType, double? carbsRatio, double? portionSize, double? carbsPerPortion, String? portionSizeAccuracy, String? carbsRatioAccuracy, int? delayedBolusDuration, double? delayedBolusRate, String? notes, }) async { final meal = ParseObject('Meal') ..set('value', value) ..set('carbsRatio', carbsRatio) ..set('portionSize', portionSize) ..set('carbsPerPortion', carbsPerPortion) ..set('delayedBolusDuration', delayedBolusDuration) ..set('delayedBolusRate', delayedBolusRate) ..set('notes', notes); if (source != null) { meal.set( 'source', (ParseObject('MealSource')..objectId = source).toPointer()); } if (category != null) { meal.set('category', (ParseObject('MealCategory')..objectId = category).toPointer()); } if (portionType != null) { meal.set('portionType', (ParseObject('MealPortionType')..objectId = portionType).toPointer()); } if (portionSizeAccuracy != null) { meal.set( 'portionSizeAccuracy', (ParseObject('Accuracy')..objectId = portionSizeAccuracy) .toPointer()); } if (carbsRatioAccuracy != null) { meal.set('carbsRatioAccuracy', (ParseObject('Accuracy')..objectId = carbsRatioAccuracy).toPointer()); } await meal.save(); } static Future update( String objectId, { String? value, String? source, String? category, String? portionType, double? carbsRatio, double? portionSize, double? carbsPerPortion, String? portionSizeAccuracy, String? carbsRatioAccuracy, int? delayedBolusDuration, double? delayedBolusRate, String? notes, }) async { var meal = ParseObject('Meal')..objectId = objectId; if (value != null) { meal.set('value', value); } if (source != null) { meal.set( 'source', (ParseObject('MealSource')..objectId = source).toPointer()); } if (category != null) { meal.set('category', (ParseObject('MealCategory')..objectId = category).toPointer()); } if (portionType != null) { meal.set('portionType', (ParseObject('MealPortionType')..objectId = portionType).toPointer()); } if (carbsRatio != null) { meal.set('carbsRatio', carbsRatio); } if (portionSize != null) { meal.set('portionSize', portionSize); } if (carbsPerPortion != null) { meal.set('carbsPerPortion', carbsPerPortion); } if (portionSizeAccuracy != null) { meal.set( 'portionSizeAccuracy', (ParseObject('Accuracy')..objectId = portionSizeAccuracy) .toPointer()); } if (carbsRatioAccuracy != null) { meal.set('carbsRatioAccuracy', (ParseObject('Accuracy')..objectId = carbsRatioAccuracy).toPointer()); } if (delayedBolusDuration != null) { meal.set('delayedBolusDuration', delayedBolusDuration); } if (delayedBolusRate != null) { meal.set('delayedBolusRate', delayedBolusRate); } if (notes != null) { meal.set('notes', notes); } await meal.save(); } Future delete() async { var meal = ParseObject('Meal')..objectId = objectId; await meal.delete(); } }