<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Illuminate\Support\Facades\DB;

return new class extends Migration
{
    public function up(): void
    {
        // Backfill producto_id in inventario_prendas from la OP relacionada cuando sea NULL
        // Use a compatible update for both MySQL/Postgres and SQLite
        $driver = Schema::getConnection()->getDriverName();
        if ($driver === 'sqlite') {
            DB::statement(
                "UPDATE inventario_prendas SET producto_id = (
                    SELECT op.producto_id FROM orden_produccions op WHERE op.id = inventario_prendas.orden_produccion_id
                ) WHERE producto_id IS NULL AND orden_produccion_id IS NOT NULL AND (
                    SELECT op.producto_id FROM orden_produccions op WHERE op.id = inventario_prendas.orden_produccion_id
                ) IS NOT NULL"
            );
        } else {
            DB::statement("UPDATE inventario_prendas ip SET producto_id = op.producto_id FROM orden_produccions op WHERE ip.orden_produccion_id = op.id AND ip.producto_id IS NULL AND op.producto_id IS NOT NULL");
        }
    }

    public function down(): void
    {
        // Revertir sólo las asignaciones que coinciden con la OP actual
        DB::statement("UPDATE inventario_prendas ip SET producto_id = NULL FROM orden_produccions op WHERE ip.orden_produccion_id = op.id AND ip.producto_id = op.producto_id");
    }
};