$get<R extends FirestoreEntity<R>> method

Future<R?> $get<R extends FirestoreEntity<R>>(
  1. String id, {
  2. R orCreate()?,
})

Implementation

Future<R?> $get<R extends FirestoreEntity<R>>(String id, {R Function()? orCreate}) async {
  assert(DogFirestoreEngine.instance.checkSubcollection<T, R>());
  var documentReference = getSubCollection<R>().doc(id);
  var snapshot = await documentReference.get();
  if (snapshot.exists) {
    return snapshot.data()!;
  } else {
    if (orCreate != null) {
      var entity = orCreate();
      entity.id = id;
      entity.withParent(this as T);
      return await entity.save();
    }
    return null;
  }
}