diff --git a/src/Driver/PostgresCursorFactory.php b/src/Driver/PostgresCursorFactory.php index e2f2468fae982e830536beb10874ade7f097f1b0..9d5db529d5904004c33dfc8fa2d0d2926f280cf0 100644 --- a/src/Driver/PostgresCursorFactory.php +++ b/src/Driver/PostgresCursorFactory.php @@ -8,6 +8,10 @@ namespace Grifart\Mappi\Cursor\Driver; use Dibi\Connection; use Grifart\Mappi\Cursor\Cursor; use Grifart\Mappi\Cursor\ICursor; +use Grifart\Mappi\Cursor\Position; +use Grifart\Mappi\Cursor\SemanticCursor; +use Grifart\Mappi\Cursor\SemanticTrackedCursor; +use Grifart\Mappi\Cursor\TrackedCursor; final class PostgresCursorFactory { @@ -48,6 +52,20 @@ final class PostgresCursorFactory ); } + public function createSemantic(string $sql, bool $scroll) : SemanticTrackedCursor + { + $cursor = $this->create($sql, $scroll); + return new SemanticCursor($cursor); + } + + public function createTrackedSemantic(string $sql, bool $scroll) : SemanticTrackedCursor + { + $cursor = $this->create($sql, $scroll); + return new SemanticTrackedCursor( + new TrackedCursor($cursor, Position::fromLeft(0)) + ); + } + /** * Generate cursor unique name in current transaction * @return string