From 5f8c57c94214e97a1776973dcf9fc2768f991518 Mon Sep 17 00:00:00 2001 From: Marc Morera Date: Wed, 13 Jul 2022 18:55:10 +0200 Subject: [PATCH] Added forcePage method --- Query/Query.php | 20 +++++++++++++++++++- Tests/Query/QueryTest.php | 13 ++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/Query/Query.php b/Query/Query.php index 5a3825c..6148c53 100644 --- a/Query/Query.php +++ b/Query/Query.php @@ -243,9 +243,9 @@ public static function create( $page = (int) (max(1, $page)); $query = new static($queryText); - $query->from = ($page - 1) * $size; $query->size = $size; $query->page = $page; + $query->calculateFrom(); return $query; } @@ -338,6 +338,15 @@ public function getFields(): array return $this->fields; } + /** + * @param int $page + */ + public function forcePage(int $page): void + { + $this->page = $page; + $this->calculateFrom(); + } + /** * @param int $size * @@ -346,6 +355,15 @@ public function getFields(): array public function forceSize(int $size) { $this->size = $size; + $this->calculateFrom(); + } + + /** + * @return void + */ + public function calculateFrom() + { + $this->from = ($this->page - 1) * $this->size; } /** diff --git a/Tests/Query/QueryTest.php b/Tests/Query/QueryTest.php index ee9cfac..74561b5 100644 --- a/Tests/Query/QueryTest.php +++ b/Tests/Query/QueryTest.php @@ -367,11 +367,22 @@ public function testDeleteAggregationByField() $this->assertNull($query->getAggregation('field3')); } - public function testForceSize() + public function testForceSizeAndPage() { $query = Query::create('x', 1, 10); $this->assertEquals(10, $query->getSize()); + $this->assertEquals(0, $query->getFrom()); $query->forceSize(7); $this->assertEquals(7, $query->getSize()); + $this->assertEquals(0, $query->getFrom()); + + $query = Query::create('x', 2, 5); + $this->assertEquals(2, $query->getPage()); + $this->assertEquals(5, $query->getSize()); + $this->assertEquals(5, $query->getFrom()); + + $query->forcePage(3); + $this->assertEquals(3, $query->getPage()); + $this->assertEquals(10, $query->getFrom()); } }