<?php declare(strict_types=1);
namespace openvk\Web\Models\Repositories; 
use openvk\Web\Models\Entities\APIToken;

class APITokens extends Repository
{
    protected $tableName = "api_tokens";
    protected $modelName = "APIToken";
    
    function getByCode(string $code, bool $withRevoked = false): ?APIToken
    {
        $parts  = explode("-", $code);
        $id     = $parts[0];
        $secret = implode("", array_slice($parts, 1, 9));
        
        $token = $this->get((int) $id);
        if(!$token)
            return NULL;
        else if($token->getSecret() !== $secret)
            return NULL;
        else if($token->isRevoked() && !$withRevoked)
            return NULL;
        
        return $token;
    }
}