addFavorite method

Future<void> addFavorite(
  1. String email,
  2. String exerciseName
)

Adds an exercise to favourite exercises of a user.

Implementation

Future<void> addFavorite(String email, String exerciseName) async {
  final exerciseQuery = await firestore
      .collection('exercises')
      .where('name', isEqualTo: exerciseName)
      .get();
  if (exerciseQuery.docs.isEmpty) return;

  final exerciseDoc = exerciseQuery.docs.first;
  final exerciseRef = exerciseDoc.reference;

  final userQuery = await firestore
      .collection('users')
      .where('email', isEqualTo: email)
      .get();
  if (userQuery.docs.isEmpty) return;

  final userDoc = userQuery.docs.first;

  final favoriteQuery = await userDoc.reference
      .collection('favorites')
      .where('exercise', isEqualTo: exerciseRef)
      .get();

  if (favoriteQuery.docs.isEmpty) {
    await userDoc.reference.collection('favorites').add(
        {'exercise': exerciseRef, 'addedAt': FieldValue.serverTimestamp()});
  }
}