bambuddy/scripts/update_archive_date.py
2026-01-25 11:58:09 +01:00

73 lines
2 KiB
Python
Executable file

#!/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()