delete static method

Future delete(
  1. {required String collection,
  2. List? filters,
  3. Function? onSuccess,
  4. Function? onError}
)

Implementation

static Future<dynamic> delete(
    {required String collection,
    List<dynamic>? filters,
    Function? onSuccess,
    Function? onError}) async {
  filters ??= [];
  dynamic res = "Data deleted successfully";
  dynamic collectionRef = _filteredCollectionRef(
      collection: collection, filters: filters, sorts: []);
  await collectionRef.get().then((QuerySnapshot querySnapshot) async {
    bool errors = false;
    List<String> deletedIds = [];
    for (QueryDocumentSnapshot element in querySnapshot.docs) {
      await FirebaseFirestore.instance
          .collection(collection)
          .doc(element.id)
          .delete()
          .then((value) => deletedIds.add(element.id))
          .catchError((error) {
        if (onError != null) onError(error);
        errors = true;
        res = error;
      });
    }
    if (!errors && onSuccess != null) onSuccess(deletedIds);
  }).catchError((error) {
    if (onError != null) onError(error);
    res = error;
  });
  return res;
}