<?php

namespace App\Classes\General\Eloquent;


use App\Classes\Exceptions\ResourceNotFoundException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Model;
use App\Classes\Exceptions\JobResourceNotFoundException;


abstract class AbstractFetchRecord extends AbstractGetRecord
{

    /**
     * @param array|null $filters
     * @return mixed
     */
    public function execute(array $filters = []){

        return $this->handler($filters);

    }


    /**
     * @param Builder $query
     * @return Model
     * @throws ResourceNotFoundException
     */
    public function getResults(Builder $query, array $param = []): Model {
        if(!$query->exists()){
            $table = $query->getModel()->getTable();
            if($table ==='job_results'){
                throw new JobResourceNotFoundException('Unable to find any job based on the criteria provided');
            }
            else{
                throw new ResourceNotFoundException('Unable to find any record based on the criteria provided');
            }
        }

        return $query->first();
    }

}
