<?php

namespace App\Packages\User\Repository;

use App\Packages\Core\Repository\AbstractRepository;
use App\Packages\User\Models\UserToken;

/**
 * Class UserTokenRepository
 * @package App\Packages\User\Repository
 *
 * @method UserToken firstById($id)
 *
 * @property UserToken $model
 */
class UserTokenRepository extends AbstractRepository
{
    /** @TODO: Make as param */
    const LIMIT_TOKEN = 10;

    public static function init()
    {
        return new UserTokenRepository(UserToken::class);
    }

    /**
     * @param $accessToken
     *
     * @return UserToken|null|object
     */
    public function findToken($accessToken)
    {
        return $this->query()
            ->where('access_token', '=', $accessToken)
            ->first();
    }

    /**
     * Remove old tokens
     *
     * @param $userId
     */
    public function cleanUpTokens($userId)
    {
        $this->query()
            ->orderBy('created_at', 'ASC')
            ->where('user_id', '=', $userId)
            ->offset(static::LIMIT_TOKEN - 1)
            ->delete();
    }
}
