<?php

namespace App\Models;

use Database\Factories\TikTokConnectionFactory;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class TikTokConnection extends Model
{
    /** @use HasFactory<TikTokConnectionFactory> */
    use HasFactory;

    protected $fillable = [
        'user_id',
        'tiktok_open_id',
        'advertiser_id',
        'advertiser_name',
        'advertisers',
        'identities',
        'identity_id',
        'identity_authorized_bc_id',
        'identity_type',
        'identity_name',
        'custom_identity_id',
        'custom_identity_name',
        'custom_identity_image_id',
        'tiktok_posts',
        'tiktok_item_id',
        'access_token',
        'refresh_token',
        'token_expires_at',
        'refresh_token_expires_at',
    ];

    protected $hidden = ['access_token', 'refresh_token'];

    protected function casts(): array
    {
        return [
            'access_token' => 'encrypted',
            'refresh_token' => 'encrypted',
            'advertisers' => 'array',
            'identities' => 'array',
            'tiktok_posts' => 'array',
            'token_expires_at' => 'datetime',
            'refresh_token_expires_at' => 'datetime',
        ];
    }

    public function user(): BelongsTo
    {
        return $this->belongsTo(User::class);
    }
}
