"""
Script to add Instagram sources from config to database
"""

import sys
import os
from datetime import datetime
from dotenv import load_dotenv

# Fix encoding for Windows
if sys.platform == 'win32':
    os.environ['PYTHONIOENCODING'] = 'utf-8'
    if hasattr(sys.stdout, 'reconfigure'):
        sys.stdout.reconfigure(encoding='utf-8')
        sys.stderr.reconfigure(encoding='utf-8')

load_dotenv()

from src.database.db import init_db, session_scope
from src.database.models import Source
from src.config_loader import ConfigLoader


def add_instagram_sources():
    """Add Instagram sources from config to database"""
    print("="*60)
    print("ADDING INSTAGRAM SOURCES TO DATABASE")
    print("="*60)
    
    # Initialize database
    if not init_db():
        print("❌ Error initializing database")
        return False
    
    # Load sources from config
    loader = ConfigLoader()
    loader.load()
    instagram_sources = loader.get_sources_by_platform('instagram')
    
    print(f"\nFound {len(instagram_sources)} Instagram sources in config")
    
    with session_scope() as session:
        added = 0
        updated = 0
        
        for source_config in instagram_sources[:10]:  # Add first 10 for testing
            # Check if source exists
            existing = session.query(Source).filter_by(
                platform='instagram',
                username=source_config.username
            ).first()
            
            if existing:
                # Update subscriber count
                existing.subscriber_count = source_config.subscriber_count
                existing.followers_count = source_config.subscriber_count
                existing.is_active = 1
                updated += 1
                print(f"  ↻ Updated: @{source_config.username} ({source_config.subscriber_count:,} followers)")
            else:
                # Create new source
                source = Source(
                    platform='instagram',
                    username=source_config.username,
                    identifier=source_config.username,
                    subscriber_count=source_config.subscriber_count,
                    followers_count=source_config.subscriber_count,
                    is_active=1
                )
                session.add(source)
                added += 1
                print(f"  ✓ Added: @{source_config.username} ({source_config.subscriber_count:,} followers)")
        
        print(f"\n✓ Added: {added}")
        print(f"✓ Updated: {updated}")
        print(f"✓ Total: {added + updated}")
    
    return True


if __name__ == '__main__':
    success = add_instagram_sources()
    sys.exit(0 if success else 1)
