<?php

namespace App\Models\Boards;

use Illuminate\Database\Eloquent\Model;

/**
 * 게시판 필드 설정 (EAV 스키마 정의)
 *
 * @property int $id
 * @property int $board_id
 * @property string $name 필드명
 * @property string $field_key 필드 키
 * @property string $field_type 필드 타입 (text, number, select, date 등)
 * @property array|null $field_meta 필드 메타 (옵션, 유효성 등)
 * @property bool $is_required 필수 여부
 * @property int $sort_order 정렬 순서
 *
 * @mixin IdeHelperBoardSetting
 */
class BoardSetting extends Model
{
    protected $table = 'board_settings';

    protected $fillable = [
        'board_id',
        'name',
        'field_key',
        'field_type',
        'field_meta',
        'is_required',
        'sort_order',
        'created_by',
        'updated_by',
    ];

    protected $casts = [
        'field_meta' => 'array',
        'is_required' => 'boolean',
        'sort_order' => 'integer',
    ];

    protected $attributes = [
        'is_required' => false,
        'sort_order' => 0,
    ];

    public function board()
    {
        return $this->belongsTo(Board::class, 'board_id');
    }

    /**
     * field_meta에서 특정 키 값 가져오기
     */
    public function getMeta(string $key, $default = null)
    {
        return data_get($this->field_meta, $key, $default);
    }
}
