<?php

namespace app\model;

use think\Model;

class Asset extends Model
{
    // 设置表名
    protected $table = 'bps.bps_google_ads_asset';

    // 设置主键
    protected $pk = 'asset_id';

    // 设置时间戳字段
    protected $createTime = 'create_at';
    protected $updateTime = 'update_at';

    // 定义 JSONB 类型字段
    protected $json = ['metadata'];

        // 类型判断常量
    const TYPE_YOUTUBE_VIDEO = 2;
    const TYPE_IMAGE = 4;

    // 获取类型
    public function getTypeTextAttr($value, $data)
    {
        $statusMap = [
            self::TYPE_YOUTUBE_VIDEO => 'YOUTUBE_VIDEO',
            self::TYPE_IMAGE => 'IMAGE'
        ];
        return $statusMap[$data['asset_type']] ?? 'UNKNOWN';
    }

    // 允许批量赋值的字段
    protected $fillable = ['customer_id', 'asset_type', 'asset_name', 'resource_name','asset_url', 'status', 'metadata'];

    // 关联到广告、广告组和广告活动
    public function relations()
    {
        return $this->hasMany(AssetRelation::class, 'asset_id', 'asset_id');
    }

    // 获取素材的广告、广告组和广告活动
    public function getRelations()
    {
        return $this->relations()->with(['ad', 'adGroup', 'campaign']);
    }

    // 追加自定义字段到模型结果中
    public function appendCustomAttributes()
    {
        return ['relations'];
    }
}