#!/usr/bin/env python3 """Import TLD prices from JSON file to database.""" import asyncio import json import sys from datetime import datetime from pathlib import Path # Add parent directory to path sys.path.insert(0, str(Path(__file__).parent.parent)) from app.database import AsyncSessionLocal, init_db from app.models.tld_price import TLDPrice async def import_prices(json_path: str = None): """Import TLD prices from JSON.""" await init_db() # Default path if json_path is None: json_path = Path(__file__).parent / "tld_prices_export.json" else: json_path = Path(json_path) if not json_path.exists(): print(f"File not found: {json_path}") return with open(json_path) as f: data = json.load(f) prices = data.get("prices", []) print(f"Importing {len(prices)} TLD prices from {json_path}") async with AsyncSessionLocal() as db: imported = 0 for p in prices: try: price = TLDPrice( tld=p["tld"], registrar=p["registrar"], registration_price=p["registration_price"], renewal_price=p.get("renewal_price"), transfer_price=p.get("transfer_price"), currency=p.get("currency", "USD"), promo_price=p.get("promo_price"), recorded_at=datetime.fromisoformat(p["recorded_at"]) if p.get("recorded_at") else datetime.utcnow(), ) db.add(price) imported += 1 except Exception as e: print(f"Error importing {p.get('tld')}: {e}") await db.commit() print(f"Successfully imported {imported} TLD prices") if __name__ == "__main__": json_file = sys.argv[1] if len(sys.argv) > 1 else None asyncio.run(import_prices(json_file))