#!/usr/bin/env python3
"""
Script para eliminar vehículos de 1975 hacia abajo de la base de datos
"""

import sqlite3
import os

def remove_old_vehicles():
    # Verificar que la base de datos exista
    db_path = "vehicle_database/vehicle_database.db"
    if not os.path.exists(db_path):
        print(f"Error: Base de datos no encontrada en {db_path}")
        return

    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()

    print("Eliminando vehículos de 1975 hacia abajo de la base de datos...")

    try:
        # Contar cuántos vehículos vamos a eliminar antes de hacerlo
        cursor.execute("""
            SELECT COUNT(*) 
            FROM model_year_engine mye
            JOIN years y ON mye.year_id = y.id
            WHERE y.year <= 1975
        """)
        count_to_delete = cursor.fetchone()[0]
        
        print(f"Se eliminarán {count_to_delete} vehículos de 1975 hacia abajo")

        if count_to_delete > 0:
            print("Procediendo con la eliminación...")
            
            # Eliminar las combinaciones modelo-año-motor para años <= 1975
            cursor.execute("""
                DELETE FROM model_year_engine 
                WHERE year_id IN (
                    SELECT id FROM years WHERE year <= 1975
                )
            """)
            
            # Eliminar los años <= 1975 que ya no tienen registros asociados
            cursor.execute("""
                DELETE FROM years 
                WHERE year <= 1975 
                AND id NOT IN (
                    SELECT DISTINCT year_id FROM model_year_engine
                )
            """)
            
            conn.commit()
            print(f"Se eliminaron {count_to_delete} registros de vehículos de 1975 hacia abajo")
            
            # Mostrar algunos de los años que se eliminaron
            print("\nAños eliminados:")
            cursor.execute("""
                SELECT DISTINCT y.year
                FROM years y
                WHERE y.year <= 1975
                ORDER BY y.year DESC
            """)
            deleted_years = cursor.fetchall()
            if deleted_years:
                for year in deleted_years:
                    print(f"  - {year[0]}")
            else:
                print("  (No quedan años <= 1975 en la base de datos)")
                
        else:
            print("No hay vehículos de 1975 hacia abajo para eliminar")

        # Mostrar un resumen de la base de datos actualizada
        print("\nResumen de la base de datos actualizada:")
        
        # Contar vehículos restantes
        cursor.execute("""
            SELECT COUNT(*) 
            FROM model_year_engine mye
            JOIN years y ON mye.year_id = y.id
        """)
        total_vehicles = cursor.fetchone()[0]
        print(f"Total de vehículos restantes: {total_vehicles}")
        
        # Mostrar rango de años actual
        cursor.execute("SELECT MIN(year), MAX(year) FROM years")
        min_year, max_year = cursor.fetchone()
        print(f"Rango de años actual: {min_year} - {max_year}")

    except Exception as e:
        print(f"Error al eliminar vehículos antiguos: {e}")
        conn.rollback()
    finally:
        conn.close()

if __name__ == "__main__":
    remove_old_vehicles()