import argparse import sys from datetime import datetime from pathlib import Path import structlog from sqlmodel import Session, select # Add the src directory to the system path sys.path.append(str(Path(__file__).resolve().parent.parent / "src")) import models as models log = structlog.get_logger() def update_pub_date(episode_id: str, new_date: str): with Session(models.engine) as session: episode = session.exec( select(models.PodcastEpisode).where(models.PodcastEpisode.id == episode_id) ).first() if episode is None: log.error("Could not find episode") return episode.publish_date = datetime.fromisoformat(new_date) assert episode.publish_date.tzinfo is not None, "timezone is required" session.add(episode) session.commit() log.info("Updated episode", episode.id) def main(): parser = argparse.ArgumentParser( prog="update-pub-date.py", description="Update an episode publish date", ) parser.add_argument("episode_id") parser.add_argument("new_date") args = parser.parse_args() update_pub_date(args.episode_id, args.new_date) if __name__ == "__main__": main()