<?php
declare(strict_types=1);

namespace App\Domain\Media\Migrations;

use App\Framework\Database\ConnectionInterface;
use App\Framework\Database\Migration\Migration;

final class CreateImagesTable implements Migration
{

    public function up(ConnectionInterface $connection): void
    {
        $sql = <<<SQL
            CREATE TABLE IF NOT EXISTS images (
                ulid                VARCHAR(26) NOT NULL,
                filename            VARCHAR(255) NOT NULL,
                original_filename   VARCHAR(255) NOT NULL,
                mime_type           VARCHAR(100) NOT NULL,
                file_size           BIGINT NOT NULL,
                width               INT UNSIGNED NOT NULL,
                height              INT UNSIGNED NOT NULL,
                hash                VARCHAR(255) NOT NULL,
                path                VARCHAR(500) NOT NULL,
                alt_text            TEXT NOT NULL,
                created_at          TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
                updated_at          TIMESTAMP NULL DEFAULT NULL,

                PRIMARY KEY (ulid),
                UNIQUE KEY uk_images_hash (hash),
                UNIQUE KEY uk_images_ulid (ulid)
            ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
SQL;

        $connection->query($sql);
    }

    public function down(ConnectionInterface $connection): void
    {
        $connection->execute("DROP TABLE IF EXISTS images");
    }

    public function getVersion(): string
    {
        return "002";
    }

    public function getDescription(): string
    {
        return "Create Image Table";
    }
}
