. */ namespace SP\Infrastructure\Database; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; /** * Interface DatabaseInterface * * @package SP\Storage */ interface DatabaseInterface { /** * Perform any type of query * * @throws QueryException * @throws ConstraintException */ public function runQuery(QueryDataInterface $queryData, bool $fullCount = false): QueryResult; /** * Don't fetch records and return prepared statement */ public function doFetchWithOptions(QueryDataInterface $queryData): iterable; public function beginTransaction(): bool; public function endTransaction(): bool; public function rollbackTransaction(): bool; /** * Execute a raw query * * @param string $query * @throws QueryException */ public function runQueryRaw(string $query): void; }