code: def add(self, document_data, document_id=None):
          
          if document_id is None:
              parent_path, expected_prefix = self._parent_info()
  
              document_pb = document_pb2.Document()
  
              created_document_pb = self._client._firestore_api.create_document(
                  parent_path,
                  collection_id=self.id,
                  document_id=None,
                  document=document_pb,
                  mask=None,
                  metadata=self._client._rpc_metadata,
              )
  
              new_document_id = _helpers.get_doc_id(created_document_pb, expected_prefix)
              document_ref = self.document(new_document_id)
              set_result = document_ref.set(document_data)
              return set_result.update_time, document_ref
          else:
              document_ref = self.document(document_id)
              write_result = document_ref.create(document_data)
              return write_result.update_time, document_ref
docs: Create a document in the Firestore database with the provided data.
  
          Args:
              document_data (dict): Property names and values to use for
                  creating the document.
              document_id (Optional[str]): The document identifier within the
                  current collection. If not provided, an ID will be
                  automatically assigned by the server (the assigned ID will be
                  a random 20 character string composed of digits,
                  uppercase and lowercase letters).
  
          Returns:
              Tuple[google.protobuf.timestamp_pb2.Timestamp, \
                  ~.firestore_v1beta1.document.DocumentReference]: Pair of
  
              * The ``update_time`` when the document was created (or
                overwritten).
              * A document reference for the created document.
  
          Raises:
              ~google.cloud.exceptions.Conflict: If ``document_id`` is provided
                  and the document already exists.