. */ namespace SP\Storage\Database; use PDOStatement; use SP\Core\Exceptions\ConstraintException; use SP\Core\Exceptions\QueryException; /** * Interface DatabaseInterface * * @package SP\Storage */ interface DatabaseInterface { /** * Performs a DB query * * @param QueryData $queryData Query data * * @return QueryResult * @throws QueryException * @throws ConstraintException */ public function doQuery(QueryData $queryData): QueryResult; /** * Don't fetch records and return prepared statement * * @param QueryData $queryData * * @return PDOStatement */ public function doQueryRaw(QueryData $queryData); /** * Returns the total number of records * * @param QueryData $queryData Query data * * @return int Records count */ public function getFullRowCount(QueryData $queryData); /** * @return DBStorageInterface */ public function getDbHandler(); /** * @return int */ public function getNumRows(); /** * @return int */ public function getNumFields(); /** * @return array */ public function getLastResult(); /** * @return int */ public function getLastId(); /** * Iniciar una transacción * * @return bool */ public function beginTransaction(); /** * Finalizar una transacción * * @return bool */ public function endTransaction(); /** * Rollback de una transacción * * @return bool */ public function rollbackTransaction(); /** * @param $table * * @return array */ public function getColumnsForTable($table): array; }