update repository references and improve script handling
This commit is contained in:
57
hassio-google-drive-backup/dev/error_tools.py
Normal file
57
hassio-google-drive-backup/dev/error_tools.py
Normal file
@@ -0,0 +1,57 @@
|
||||
import argparse
|
||||
from google.cloud import firestore
|
||||
from datetime import datetime, timedelta
|
||||
DELETE_BATCH_SIZE = 200
|
||||
STORE_NAME = "error_reports"
|
||||
|
||||
|
||||
def delete_old_data():
|
||||
# Initialize Firestore
|
||||
db = firestore.Client()
|
||||
collection_ref = db.collection(STORE_NAME)
|
||||
|
||||
# Define the datetime for one week ago
|
||||
week_ago = datetime.now() - timedelta(days=7)
|
||||
|
||||
# Query to find all documents older than a week
|
||||
total_deleted = 0
|
||||
while True:
|
||||
to_delete = 0
|
||||
batch = db.batch()
|
||||
docs = collection_ref.where('server_time', '<', week_ago).stream()
|
||||
for doc in docs:
|
||||
to_delete += 1
|
||||
batch.delete(doc.reference)
|
||||
if to_delete >= DELETE_BATCH_SIZE:
|
||||
break
|
||||
if to_delete > 0:
|
||||
batch.commit()
|
||||
total_deleted += to_delete
|
||||
print(f"Deleted {to_delete} documents ({total_deleted} total)")
|
||||
else:
|
||||
break
|
||||
print(f"Success: All documents older than a week deleted ({total_deleted} total)")
|
||||
|
||||
|
||||
def main():
|
||||
# Create command line argument parser
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
# Add purge argument
|
||||
parser.add_argument("--purge", help="Delete all documents older than a week.", action="store_true")
|
||||
|
||||
# Add any other argument you want in future. For example:
|
||||
# parser.add_argument("--future_arg", help="Perform some future operation.")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Respond to arguments
|
||||
if args.purge:
|
||||
confirm = input('Are you sure you want to delete all documents older than a week? (y/n): ')
|
||||
if confirm.lower() == 'y':
|
||||
delete_old_data()
|
||||
else:
|
||||
print("Abort: No documents were deleted.")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user