doc method
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);
}