<?php
declare(strict_types=1);

use Celena\Core\Database\Blueprint;
use Celena\Core\Database\Connection;
use Celena\Core\Database\Schema;

/**
 * SEO-фильтры (конструктор как в OpenCart-плагинах): для конкретной комбинации
 * категории + значений атрибутов админ задаёт собственные H1, мета-теги и
 * intro-текст. На витрине ShopController подменяет данные страницы при матче.
 */
return function (Schema $schema, Connection $conn): void {
    if ($schema->hasTable('shop_seo_filters')) {
        return;
    }
    $schema->create('shop_seo_filters', function (Blueprint $t) {
        $t->id();
        $t->string('title', 200);
        // NULL = правило применяется в любой категории, иначе целевая категория.
        $t->bigInteger('category_id')->nullable();
        // JSON-массив условий: [{"attr_slug":"color","values":["Червоний","Синій"]}, ...]
        // Все условия должны быть удовлетворены, чтобы правило применилось.
        $t->json('conditions')->nullable();
        // Шаблоны с переменными {category}, {attr_<slug>}, {count}, {price_min}, {price_max}.
        $t->text('h1')->nullable();
        $t->text('meta_title')->nullable();
        $t->text('meta_description')->nullable();
        $t->text('meta_keywords')->nullable();
        $t->text('intro_text')->nullable();
        $t->boolean('is_active')->default(true);
        $t->integer('sort_order')->default(0);
        $t->datetime('created_at')->nullable();
        $t->datetime('updated_at')->nullable();
        $t->index('category_id');
        $t->index('is_active');
    });
};
