<?php

namespace App\Packages\Follower\Models;

use App\Packages\Core\Traits\RepositoryTrait;
use App\Packages\Follower\Repository\FollowerRepository;
use App\Packages\User\Models\User;
use Carbon\Carbon;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasOne;

/**
 * Class FollowerRelation
 * @package App\Packages\Follower\Models
 *
 * @property int $id
 *
 * @property int $user_id
 * @property int $follower_id
 *
 * @property bool $status
 *
 * @property Carbon|null $created_at
 * @property Carbon|null $updated_at
 *
 * @property User $user
 * @property User $follower
 *
 * @method static FollowerRepository repository()
 */
class FollowerRelation extends Model
{
    use RepositoryTrait;

    protected $table = 'table_follower_relation';

    protected $dates = [
        'created_at',
        'updated_at'
    ];

    /** @var string */
    public static $repositoryClass = FollowerRepository::class;

    /**
     * @return HasOne
     */
    public function user()
    {
        return $this->hasOne(User::class, 'id', 'user_id');
    }

    /**
     * @return HasOne
     */
    public function follower()
    {
        return $this->hasOne(User::class, 'id', 'follower_id');
    }
}