Changed namespaces and added Query Builder Co-authored-by: Juan Pablo Vial <jpvial@goacegroup.com> Reviewed-on: #2
82 lines
1.7 KiB
PHP
82 lines
1.7 KiB
PHP
<?php
|
|
namespace Database\Implement;
|
|
|
|
use PDO;
|
|
use PDOStatement;
|
|
use Database\Define;
|
|
use Database\Exception\Database\BlankResult;
|
|
|
|
class ResultSet implements Define\Database\ResultSet
|
|
{
|
|
public function __construct(PDOStatement $statement)
|
|
{
|
|
$this->setStatement($statement);
|
|
}
|
|
|
|
protected PDOStatement $statement;
|
|
|
|
public function getStatement(): PDOStatement
|
|
{
|
|
return $this->statement;
|
|
}
|
|
protected function setStatement(PDOStatement $statement): self
|
|
{
|
|
$this->statement = $statement;
|
|
return $this;
|
|
}
|
|
|
|
public function execute(array $data): self
|
|
{
|
|
$this->statement->execute($data);
|
|
return $this;
|
|
}
|
|
|
|
/**
|
|
* @return PDOStatement
|
|
* @throws BlankResult
|
|
*/
|
|
protected function checkResults(): PDOStatement
|
|
{
|
|
if ($this->getStatement()->rowCount() === 0) {
|
|
throw new BlankResult(query: $this->getStatement()->queryString);
|
|
}
|
|
return $this->getStatement();
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
* @throws BlankResult
|
|
*/
|
|
public function fetchFirst(): array
|
|
{
|
|
return $this->checkResults()->fetch(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
* @throws BlankResult
|
|
*/
|
|
public function fetchAll(): array
|
|
{
|
|
return $this->checkResults()->fetchAll(PDO::FETCH_ASSOC);
|
|
}
|
|
|
|
/**
|
|
* @return object
|
|
* @throws BlankResult
|
|
*/
|
|
public function fetchFirstAsObject(): object
|
|
{
|
|
return $this->checkResults()->fetch(PDO::FETCH_OBJ);
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
* @throws BlankResult
|
|
*/
|
|
public function fetchAllAsObjects(): array
|
|
{
|
|
return $this->checkResults()->fetchAll(PDO::FETCH_OBJ);
|
|
}
|
|
}
|