. */ namespace SP\Domain\Database\Ports; use SP\Domain\Core\Exceptions\ConstraintException; use SP\Domain\Core\Exceptions\QueryException; use SP\Infrastructure\Database\QueryResult; /** * Interface DatabaseInterface */ 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; }