<?php

declare(strict_types=1);

namespace Modules\{{ module }}\Database\Models;

use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

/**
 * @intent Entidade Eloquent {{ model }} (ADR-007/ADR-017).
 *
 * @property string $id
 * @property string $title
 * @property string|null $description
 * @property array<string, mixed>|null $corpo
 * @property array<string, mixed>|null $metadados
 * @property bool $is_active
 * @property \Illuminate\Support\Carbon|null $created_at
 * @property \Illuminate\Support\Carbon|null $updated_at
 * @property \Illuminate\Support\Carbon|null $deleted_at
 */
final class {{ class }} extends Model
{
    use HasUuids;
    use SoftDeletes;

    protected $table = '{{ schema }}.{{ table }}';

    /** @var list<string> */
    protected $fillable = [
        'title',
        'description',
        'corpo',
        'metadados',
        'is_active',
    ];

    /**
     * @return array<string, string>
     */
    protected function casts(): array
    {
        return [
            'is_active' => 'boolean',
            // Conteúdo/dados ricos em `jsonb` (ADR-017) — nunca HTML/CSS/flag de UI.
            'corpo' => 'array',
            'metadados' => 'array',
        ];
    }
}
