<?php
declare(strict_types=1);

use Phinx\Migration\AbstractMigration;

final class RepartidoresTable extends AbstractMigration
{
    public function change(): void
    {
        $table = $this->table('repartidores');
        $table
            ->addColumn('usuario_id', 'integer', ['signed' => false])
            ->addColumn('zona_id', 'integer', ['null' => true, 'signed' => false])
            ->addColumn('vehiculo', 'enum', ['values' => ['moto', 'bicicleta', 'carro', 'a_pie'], 'default' => 'moto'])
            ->addColumn('placa', 'string', ['limit' => 20, 'null' => true])
            ->addColumn('documento_identidad', 'string', ['limit' => 50, 'null' => true])
            ->addColumn('estado_disponibilidad', 'enum', ['values' => ['disponible', 'ocupado', 'desconectado'], 'default' => 'desconectado'])
            ->addColumn('calificacion_promedio', 'decimal', ['precision' => 3, 'scale' => 2, 'default' => 5.0])
            ->addColumn('created_at', 'timestamp', ['default' => 'CURRENT_TIMESTAMP'])
            ->addColumn('updated_at', 'timestamp', ['null' => true, 'update' => 'CURRENT_TIMESTAMP'])
            ->addForeignKey('usuario_id', 'usuarios', 'id', ['delete' => 'CASCADE', 'update' => 'CASCADE'])
            ->addForeignKey('zona_id', 'zonas', 'id', ['delete' => 'SET_NULL', 'update' => 'CASCADE'])
            ->addIndex(['usuario_id'], ['unique' => true])
            ->create();
    }
}
