51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
"""
|
|
Delete specific sites from database by ID
|
|
"""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from src.database.session import db_manager
|
|
from src.database.repositories import SiteDeploymentRepository
|
|
|
|
def delete_sites(site_ids):
|
|
"""Delete sites by their IDs"""
|
|
db_manager.initialize()
|
|
session = db_manager.get_session()
|
|
site_repo = SiteDeploymentRepository(session)
|
|
|
|
try:
|
|
deleted_count = 0
|
|
for site_id in site_ids:
|
|
# Get site info first to display what we're deleting
|
|
site = site_repo.get_by_id(site_id)
|
|
if site:
|
|
hostname = site.custom_hostname or site.pull_zone_bcdn_hostname
|
|
print(f"Deleting site {site_id}: {site.site_name} ({hostname})")
|
|
else:
|
|
print(f"Site {site_id}: Not found in database")
|
|
|
|
# Delete directly - the delete method handles not-found cases
|
|
if site_repo.delete(site_id):
|
|
print(f" [OK] Deleted site {site_id}")
|
|
deleted_count += 1
|
|
else:
|
|
print(f" [SKIP] Site {site_id} was not found or already deleted")
|
|
|
|
print(f"\nDeleted {deleted_count}/{len(site_ids)} site(s)")
|
|
|
|
except Exception as e:
|
|
print(f"Error deleting sites: {e}")
|
|
import traceback
|
|
traceback.print_exc()
|
|
session.rollback()
|
|
finally:
|
|
session.close()
|
|
|
|
if __name__ == "__main__":
|
|
site_ids = [568, 569, 570]
|
|
delete_sites(site_ids)
|
|
|