""" Delete all generated content for a specific project """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent.parent)) import click from src.database.session import db_manager from src.database.models import GeneratedContent def delete_project_content(project_id: int, confirm: bool = True): """ Delete all generated content for a project Args: project_id: Project ID to delete content for confirm: If True, ask for confirmation before deleting """ db_manager.initialize() session = db_manager.get_session() try: records = session.query(GeneratedContent).filter( GeneratedContent.project_id == project_id ).all() count = len(records) if count == 0: click.echo(f"No generated content found for project {project_id}") return click.echo(f"Found {count} generated content records for project {project_id}:") for record in records: click.echo(f" - ID {record.id}: {record.tier} - {record.title[:60]}...") if confirm: response = click.confirm(f"\nDelete all {count} records?", default=False) if not response: click.echo("Cancelled.") return for record in records: session.delete(record) session.commit() click.echo(f"Successfully deleted {count} records for project {project_id}") except Exception as e: session.rollback() click.echo(f"Error: {e}", err=True) raise finally: session.close() @click.command() @click.argument('project_id', type=int) @click.option('--yes', '-y', is_flag=True, help='Skip confirmation prompt') def main(project_id: int, yes: bool): """Delete all generated content for PROJECT_ID""" delete_project_content(project_id, confirm=not yes) if __name__ == "__main__": main()