import psycopg2

def fix_table_structure():
    """Исправление структуры таблицы"""
    try:
        conn = psycopg2.connect(
            host='127.0.0.1',
            database='aliexpress_automation',
            user='postgres',
            password='PostgresPass123'  # Замените на ваш пароль
        )
        cursor = conn.cursor()
        
        # Проверяем существование столбца external_product_id
        cursor.execute("""
            SELECT column_name 
            FROM information_schema.columns 
            WHERE table_name='products' AND column_name='external_product_id'
        """)
        
        if not cursor.fetchone():
            # Добавляем столбец external_product_id
            cursor.execute("""
                ALTER TABLE products 
                ADD COLUMN external_product_id VARCHAR(100)
            """)
            print("Столбец external_product_id добавлен")
        else:
            print("Столбец external_product_id уже существует")
        
        # Создаем индекс для external_product_id
        cursor.execute("""
            CREATE INDEX IF NOT EXISTS idx_products_external_id 
            ON products(external_product_id)
        """)
        print("Индекс для external_product_id создан")
        
        # Проверяем и создаем другие индексы
        indexes = [
            ("idx_products_status", "products(status)"),
            ("idx_products_category", "products(category)"),
            ("idx_products_created_at", "products(created_at)"),
            ("idx_analytics_product_date", "analytics(product_id, date)")
        ]
        
        for index_name, index_definition in indexes:
            cursor.execute(f"CREATE INDEX IF NOT EXISTS {index_name} ON {index_definition}")
            print(f"Индекс {index_name} создан")
        
        conn.commit()
        cursor.close()
        conn.close()
        
        print("\nСтруктура таблицы исправлена успешно!")
        
    except psycopg2.Error as e:
        print(f"Ошибка при исправлении структуры: {e}")

def show_table_structure():
    """Показать структуру таблицы products"""
    try:
        conn = psycopg2.connect(
            host='127.0.0.1',
            database='aliexpress_automation',
            user='automation_user',
            password='AutoPass123'
        )
        cursor = conn.cursor()
        
        cursor.execute("""
            SELECT column_name, data_type, is_nullable, column_default
            FROM information_schema.columns 
            WHERE table_name = 'products'
            ORDER BY ordinal_position
        """)
        
        columns = cursor.fetchall()
        print("\nСтруктура таблицы products:")
        print("-" * 70)
        print(f"{'Столбец':<25} {'Тип':<20} {'NULL':<10} {'По умолчанию':<15}")
        print("-" * 70)
        
        for column in columns:
            print(f"{column[0]:<25} {column[1]:<20} {column[2]:<10} {str(column[3])[:14]:<15}")
        
        cursor.close()
        conn.close()
        
    except psycopg2.Error as e:
        print(f"Ошибка при получении структуры: {e}")

if __name__ == '__main__':
    fix_table_structure()
    show_table_structure()
