-- =============================================================================
-- Sanctum: tabla personal_access_tokens (MySQL 8 / MariaDB 10.5+)
-- =============================================================================
--
-- Ejecutar manualmente contra la base fsg_generadorv3.
-- Esta tabla almacena los tokens de acceso emitidos por Sanctum:
--   - tokenable_type/tokenable_id: relación polimórfica (apunta a
--     App\Models\Modulos\Seguridad\Usuario + idUsuario).
--   - token:         SHA-256 del token plano (nunca almacenamos el plano).
--   - abilities:     JSON serializado con scopes/permisos del token.
--   - expires_at:    expiración (null = sin expiración; Sanctum la respeta
--                    solo si config/sanctum.php -> 'expiration' está seteada).
--   - last_used_at:  timestamp de última request autenticada con el token.
--
-- Tras ejecutar este SQL, registrar la migración en el tracker de Laravel
-- con el INSERT al final para que `php artisan migrate:status` la muestre
-- como ejecutada y no intente correrla de nuevo.
-- =============================================================================

-- =============================================================================
-- Sanctum: tabla personal_access_tokens (MySQL 8 / MariaDB 10.5+)
-- =============================================================================
--
-- Ejecutar manualmente contra la base fsg_generadorv3.
-- Esta tabla almacena los tokens de acceso emitidos por Sanctum:
--   - tokenable_type/tokenable_id: relación polimórfica (apunta a
--     App\Models\Modulos\Seguridad\Usuario + idUsuario).
--   - token:         SHA-256 del token plano (nunca almacenamos el plano).
--   - abilities:     JSON serializado con scopes/permisos del token.
--   - expires_at:    expiración (null = sin expiración; Sanctum la respeta
--                    solo si config/sanctum.php -> 'expiration' está seteada).
--   - last_used_at:  timestamp de última request autenticada con el token.
--
-- Tras ejecutar este SQL, registrar la migración en el tracker de Laravel
-- con el INSERT al final para que `php artisan migrate:status` la muestre
-- como ejecutada y no intente correrla de nuevo.
-- =============================================================================

CREATE TABLE `personal_access_tokens` (
    `id`              BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    `tokenable_type`  VARCHAR(255)    NOT NULL,
    `tokenable_id`    BIGINT UNSIGNED NOT NULL,
    `name`            TEXT            NOT NULL,
    `token`           VARCHAR(64)     NOT NULL,
    `abilities`       TEXT            NULL,
    `last_used_at`    TIMESTAMP       NULL,
    `expires_at`      TIMESTAMP       NULL,
    `created_at`      TIMESTAMP       NULL,
    `updated_at`      TIMESTAMP       NULL
) ENGINE=InnoDB CHARACTER SET utf8mb4;

ALTER TABLE `personal_access_tokens`
    ADD INDEX `personal_access_tokens_tokenable_type_tokenable_id_index`
        (`tokenable_type`, `tokenable_id`);

ALTER TABLE `personal_access_tokens`
    ADD UNIQUE `personal_access_tokens_token_unique` (`token`);

ALTER TABLE `personal_access_tokens`
    ADD INDEX `personal_access_tokens_expires_at_index` (`expires_at`);