<?php
declare(strict_types=1);

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

/**
 * Кастомные (дополнительные) поля — как в DLE.
 * celena_custom_fields — описания полей (slug, label, type, options)
 * celena_custom_field_values — значения, привязанные к сущностям (entity_type + entity_id)
 */
return function (Schema $schema, Connection $conn): void {
    $schema->create('celena_custom_fields', function (Blueprint $t) {
        $t->id();
        $t->string('slug', 64);
        $t->string('label', 191);
        $t->string('type', 32); // text, textarea, number, select, multiselect, checkbox, date, image, url
        $t->string('entity_type', 32)->default('news'); // news, page
        $t->text('options')->nullable(); // JSON: списки для select, настройки
        $t->boolean('is_required')->default(false);
        $t->boolean('is_searchable')->default(false);
        $t->integer('sort_order')->default(0);
        $t->datetime('created_at')->nullable();
        $t->unique('slug');
        $t->index('entity_type');
    });

    $schema->create('celena_custom_field_values', function (Blueprint $t) {
        $t->id();
        $t->bigInteger('field_id');
        $t->string('entity_type', 32);
        $t->bigInteger('entity_id');
        $t->text('value')->nullable();
        $t->index(['field_id', 'entity_type', 'entity_id'], 'cfv_field_entity');
        $t->index(['entity_type', 'entity_id'], 'cfv_entity');
    });
};
