diff --git a/scripts/delete_junk_samples.py b/scripts/delete_junk_samples.py new file mode 100644 index 0000000..ab6d21f --- /dev/null +++ b/scripts/delete_junk_samples.py @@ -0,0 +1,55 @@ +from firebase_admin import firestore +import os +import firebase_admin +from datetime import datetime, timedelta +from google.cloud.firestore_v1.base_query import FieldFilter + +def delete_documents_in_batch(collection_ref, batch_size): + # Query to get all documents + query = collection_ref.order_by('testTime', direction=firestore.Query.DESCENDING).limit(batch_size) + documents = query.stream() + + batch = collection_ref._client.batch() # Internal batch object + + # Delete documents in batch + count = 0 + for doc in documents: + # print(doc.to_dict) + batch.delete(doc.reference) + count += 1 + + # Commit the batch + batch.commit() + print(f'Deleted {count} documents in batch') + + +def delete_latest_documents(collection_name, num_documents, batch_size): + + file_path = os.getcwd() + '/keys' + '/hpos-af3cc-firebase-adminsdk.json' + cred = firebase_admin.credentials.Certificate(fr'{file_path}') + + firebase_admin.initialize_app(cred) + + # Initialize Firestore client + db = firestore.client() + + # Reference to the collection + collection_ref = db.collection(collection_name) + + # Delete documents in batches + remaining_documents = num_documents + while remaining_documents > 0: + current_batch_size = min(remaining_documents, batch_size) + delete_documents_in_batch(collection_ref, current_batch_size) + remaining_documents -= current_batch_size + + +if __name__ == "__main__": + # Specify your Firestore collection name + collection_name = 'testData' + + num_documents = 10000 + batch_size = 500 + + # Call the function to delete the latest documents in batches + delete_latest_documents(collection_name, num_documents, batch_size)