# init_database.py
import os
import sqlite3

def initialize_database():
    """Initialize the database with correct structure and data"""
    
    # Create directories if they don't exist
    os.makedirs('database', exist_ok=True)
    os.makedirs('uploads', exist_ok=True)
    os.makedirs('streams', exist_ok=True)
    os.makedirs('logs', exist_ok=True)
    
    conn = sqlite3.connect('database/iptv.db')
    c = conn.cursor()
    
    # Drop tables if they exist (for clean start)
    c.execute('DROP TABLE IF EXISTS schedules')
    c.execute('DROP TABLE IF EXISTS streams')
    c.execute('DROP TABLE IF EXISTS media')
    
    # Media table
    c.execute('''
        CREATE TABLE media (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            filename TEXT UNIQUE,
            original_name TEXT,
            title TEXT,
            description TEXT,
            duration INTEGER,
            file_size INTEGER,
            upload_date DATETIME DEFAULT CURRENT_TIMESTAMP,
            category TEXT,
            tags TEXT,
            is_active BOOLEAN DEFAULT 1
        )
    ''')
    
    # Streams table
    c.execute('''
        CREATE TABLE streams (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            name TEXT,
            input_source TEXT,
            output_url TEXT,
            status TEXT DEFAULT 'stopped',
            pid INTEGER,
            start_time DATETIME,
            config TEXT
        )
    ''')
    
    # Schedules table
    c.execute('''
        CREATE TABLE schedules (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            media_id INTEGER,
            stream_id INTEGER,
            start_time DATETIME,
            end_time DATETIME,
            repeat_type TEXT,
            is_active BOOLEAN DEFAULT 1,
            created_date DATETIME DEFAULT CURRENT_TIMESTAMP,
            FOREIGN KEY (media_id) REFERENCES media (id),
            FOREIGN KEY (stream_id) REFERENCES streams (id)
        )
    ''')
    
    # Create default stream with CORRECT configuration
    c.execute('''
        INSERT INTO streams (name, input_source, output_url, config)
        VALUES (?, ?, ?, ?)
    ''', (
        'Main Stream', 
        'uploads/default.mp4',  # Realistic input source
        'http://khalil1342.ddns.net:34401/streams/output.m3u8',  # Correct output URL
        '{"video_codec": "libx264", "audio_codec": "aac", "bitrate": "2000k"}'
    ))
    
    # Create a second stream for testing
    c.execute('''
        INSERT INTO streams (name, input_source, output_url, config)
        VALUES (?, ?, ?, ?)
    ''', (
        'Backup Stream', 
        'uploads/backup.mp4',
        'http://khalil1342.ddns.net:34401/streams/backup.m3u8',
        '{"video_codec": "libx264", "audio_codec": "aac", "bitrate": "1500k"}'
    ))
    
    conn.commit()
    conn.close()
    
    print("✅ Database initialized successfully!")
    print("✅ Tables created: media, streams, schedules")
    print("✅ Default streams added")
    print("✅ Directories created: database/, uploads/, streams/, logs/")
    print("\n📋 Next steps:")
    print("1. Run: python main.py")
    print("2. Access: http://localhost:5000")
    print("3. Login with: admin / admin123")
    print("4. Upload media files")
    print("5. Start streaming!")

if __name__ == '__main__':
    initialize_database()