""" Migration script to add arrival tracking columns to newbook_daily_occupancy table: - arrival_count: Integer count of bookings arriving on this date - arrival_booking_ids: JSONB list of booking IDs arriving - arrival_booking_details: JSONB list of full arrival details with booking refs This enables cross-referencing hotel arrivals with restaurant (Resos) table bookings. Run this script once after deploying the new code. """ import asyncio import logging import sys sys.path.insert(0, '/app') from sqlalchemy import text from database import engine logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) async def run_migration(): """Add arrival tracking columns to newbook_daily_occupancy table.""" logger.info("Running Newbook arrival tracking migration...") # Add arrival tracking columns to newbook_daily_occupancy table arrival_columns = [ "ALTER TABLE newbook_daily_occupancy ADD COLUMN IF NOT EXISTS arrival_count INTEGER", "ALTER TABLE newbook_daily_occupancy ADD COLUMN IF NOT EXISTS arrival_booking_ids JSONB", "ALTER TABLE newbook_daily_occupancy ADD COLUMN IF NOT EXISTS arrival_booking_details JSONB", ] for sql in arrival_columns: try: async with engine.begin() as conn: await conn.execute(text(sql)) col_name = sql.split("ADD COLUMN")[1].split()[0] logger.info(f"Added column: {col_name}") except Exception as e: if "already exists" in str(e).lower() or "duplicate column" in str(e).lower(): logger.info(f"Column already exists, skipping") else: logger.warning(f"Column migration warning: {e}") logger.info("Newbook arrival tracking migration completed successfully") if __name__ == "__main__": asyncio.run(run_migration())