<?php

namespace Xentral\Modules\Hubspot\RequestQueues;

use Xentral\Components\Database\Database;
use Xentral\Modules\Hubspot\RequestQueues\Exception\RequestQueuesException;

final class HubspotRequestQueuesGateway
{
    /** @var Database $db */
    private $db;

    public function __construct(Database $db)
    {
        $this->db = $db;
    }

    /**
     * @param string $type
     *
     * @throws RequestQueuesException
     * @return array
     */
    public function getNewRequestsByCallType($type)
    {
        if (!is_string($type)) {
            throw new RequestQueuesException(
                'Call Type should be a string'
            );
        }
        $sql = 'SELECT 
                rq.id,
                rq.command, 
                rq.not_before,
                rq.try, 
                rq.runner, 
                rq.check_sum,
                rq.on_after_done 
                FROM hubspot_request_queues AS `rq` WHERE rq.call_type=:type AND rq.completed=0 AND rq.deleted=0
                ORDER BY rq.created_at';

        return $this->db->fetchAll($sql, ['type' => $type]);
    }
}