add method

  1. @override
Future<T> add(
  1. IdentifiedObject<T> item
)
override

Adds a new item to the repository.

Implementation

@override
Future<T> add(IdentifiedObject<T> item) async {
  await _ensureNotExists(item.id);

  final doc = store.doc(_normaliseToFullPath(item.id));
  final json = RepositoryFirestore.typeConversionToFirebase.convert(
    source: toFirestore(item.object),
  );
  await doc.set(json);
  final newSnapshot = await doc.get();

  final data = newSnapshot.data();
  if (data == null) {
    throw RepositoryException.notFound(item.id);
  }

  return fromFirestore(
    newSnapshot.reference,
    RepositoryFirestore.typeConversionFromFirebase.convert(
      source: data,
    ),
  );
}