Skip to content

Commit ba00cc2

Browse files
feat(firestore): add delete() method
1 parent 687d7c2 commit ba00cc2

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

firebase/firestore/__init__.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,44 @@ def collection(self, collection_id):
156156
self._path.append(collection_id)
157157
return Collection(self._path, api_key=self._api_key, credentials=self._credentials, project_id=self._project_id, requests=self._requests)
158158

159+
def delete(self, token=None):
160+
""" Deletes the current document from firestore.
161+
162+
| For more details:
163+
| |delete_documents|_
164+
165+
.. |delete_documents| replace::
166+
Firebase Documentation | Delete data from Cloud
167+
Firestore | Delete documents
168+
169+
.. _delete_documents:
170+
https://firebase.google.com/docs/firestore/manage-data/delete-data#delete_documents
171+
172+
:type token: str
173+
:param token: (Optional) Firebase Auth User ID Token, defaults
174+
to :data:`None`.
175+
"""
176+
177+
path = self._path.copy()
178+
self._path.clear()
179+
180+
if self._credentials:
181+
db_ref = _build_db(self.__datastore, path)
182+
183+
db_ref.delete()
184+
185+
else:
186+
req_ref = f"{self._base_url}/{'/'.join(path)}?key={self._api_key}"
187+
188+
if token:
189+
headers = {"Authorization": "Firebase " + token}
190+
response = self._requests.delete(req_ref, headers=headers)
191+
192+
else:
193+
response = self._requests.delete(req_ref)
194+
195+
raise_detailed_error(response)
196+
159197
def set(self, data, token=None):
160198
""" Add data to a document in firestore.
161199

0 commit comments

Comments
 (0)