diff --git a/scripts/update_archive_date.py b/scripts/update_archive_date.py new file mode 100755 index 000000000..77017cb81 --- /dev/null +++ b/scripts/update_archive_date.py @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +"""Update the created_at date for a specific archive.""" + +import argparse +import sys +from datetime import datetime +from pathlib import Path + +# Add backend to path +sys.path.insert(0, str(Path(__file__).parent.parent)) + +from sqlalchemy import create_engine, text + +from backend.app.core.config import settings + + +def update_archive_date(archive_id: int, new_date: datetime) -> bool: + """Update created_at for an archive.""" + db_path = settings.base_dir / "bambuddy.db" + engine = create_engine(f"sqlite:///{db_path}") + + with engine.connect() as conn: + # Check if archive exists + result = conn.execute( + text("SELECT id, filename, created_at FROM print_archives WHERE id = :id"), + {"id": archive_id}, + ) + row = result.fetchone() + + if not row: + print(f"Archive ID {archive_id} not found!") + return False + + print(f"Archive: {row[1]}") + print(f"Current date: {row[2]}") + print(f"New date: {new_date}") + + # Update + conn.execute( + text("UPDATE print_archives SET created_at = :date WHERE id = :id"), + {"id": archive_id, "date": new_date}, + ) + conn.commit() + print("✓ Updated successfully!") + return True + + +def main(): + parser = argparse.ArgumentParser(description="Update archive created_at date") + parser.add_argument("archive_id", type=int, help="Archive ID to update") + parser.add_argument( + "date", + type=str, + help="New date (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS)", + ) + + args = parser.parse_args() + + # Parse date + try: + if " " in args.date: + new_date = datetime.strptime(args.date, "%Y-%m-%d %H:%M:%S") + else: + new_date = datetime.strptime(args.date, "%Y-%m-%d") + except ValueError: + print("Invalid date format. Use YYYY-MM-DD or YYYY-MM-DD HH:MM:SS") + sys.exit(1) + + update_archive_date(args.archive_id, new_date) + + +if __name__ == "__main__": + main()