<?php

namespace Kylin\Activity;

use Illuminate\Database\Eloquent\Model;

/**
 * 事件日志数据包
 *
 * 封装模型事件触发时的上下文数据，作为日志记录的输入。
 * 包含：事件名称、模型实例、变更数据、日志选项。
 *
 * @property string      $event    事件名称（created/updated/deleted 等）
 * @property Model       $model    触发事件的模型
 * @property array       $changes  变更的属性列表
 * @property LogOptions  $options  日志选项配置
 */
class EventLogBag
{
    /**
     * @param  string           $event    事件名称
     * @param  Model            $model    模型实例
     * @param  array            $changes  变更数据
     * @param  LogOptions|null  $options  日志选项（null 则从模型获取）
     */
    public function __construct(
        public string $event,
        public Model $model,
        public array $changes,
        public ?LogOptions $options = null
    ) {
        $this->options ??= $model->getActivitylogOptions();
    }
}
