doc method

DocumentReference doc({
  1. DocId? id,
  2. DocIdObj? idAsObject,
})

Implementation

DocumentReference doc({DocId? id, DocIdObj? idAsObject}) {
  if (id != null && idAsObject != null) {
    throw ArgumentError(
        'Only one of \'id\' and \'idAsObject\' can be non-null.');
  }

  dynamic actualDocId = id ?? idAsObject;

  if (_integrationId != defaultBuiltInDb) {
    if (actualDocId == null) {
      actualDocId = {'__squidId': generateId()};
    } else if (actualDocId is! Map<String, dynamic>) {
      throw ArgumentError(
          'Invalid doc id. String doc ids are only supported for the built_in_db integration. For all other integrations, the doc id must be an object.');
    }
  } else if (actualDocId == null || actualDocId is String) {
    actualDocId = {'__id': actualDocId ?? generateId()};
  } else {
    actualDocId = {'__id': normalizeJsonAsString(actualDocId)};
  }

  final docIdAsJsonString = normalizeJsonAsString(actualDocId);
  final squidDocId = SquidDocIdObj(
    collectionName: _collectionName,
    docId: docIdAsJsonString,
    integrationId: _integrationId,
  ).toSquidDocId();
  return _documentReferenceFactory.create(squidDocId, _queryBuilderFactory);
}