From b439c9f2b08a65f149bd595488d27937fd35eaf5 Mon Sep 17 00:00:00 2001 From: Josh Pollock <josh@calderawp.com> Date: Wed, 4 Apr 2018 20:50:07 -0400 Subject: [PATCH] allow resetting query --- Tests/Unit/Delete/DeleteQueryBuilderTest.php | 14 ++++++++++++++ Tests/Unit/Select/SelectQueryBuilderTest.php | 13 +++++++++++++ src/CreatesSqlQueries.php | 8 ++++++++ src/QueryBuilder.php | 12 ++++++++++++ src/Select/SelectQueryBuilder.php | 2 ++ 5 files changed, 49 insertions(+) diff --git a/Tests/Unit/Delete/DeleteQueryBuilderTest.php b/Tests/Unit/Delete/DeleteQueryBuilderTest.php index a52929f..be97ae6 100644 --- a/Tests/Unit/Delete/DeleteQueryBuilderTest.php +++ b/Tests/Unit/Delete/DeleteQueryBuilderTest.php @@ -96,4 +96,18 @@ class DeleteQueryBuilderTest extends TestCase ->getName() ); } + + /** + * Test reset of builder + * + * @covers DeleteQueryBuilder::resetBuilder() + * @covers DeleteQueryBuilder::$deleteQuery + */ + public function testResetOfBuilder() + { + $entryGenerator = $this->entryDeleteGeneratorFactory(); + $newBuilder = new MySqlBuilder(); + $entryGenerator->resetBuilder( $newBuilder ); + $this->assertSame( $newBuilder, $entryGenerator->getBuilder( ) ); + } } diff --git a/Tests/Unit/Select/SelectQueryBuilderTest.php b/Tests/Unit/Select/SelectQueryBuilderTest.php index 2c3c8f1..f3a1555 100644 --- a/Tests/Unit/Select/SelectQueryBuilderTest.php +++ b/Tests/Unit/Select/SelectQueryBuilderTest.php @@ -109,4 +109,17 @@ class SelectQueryBuilderTest extends TestCase $this->assertEquals(Entry::DESC, 'DESC'); $this->assertEquals(EntryValues::DESC, 'DESC'); } + + /** + * Test reset of builder + * + * @covers SelectQueryBuilder::resetBuilder() + */ + public function testResetOfBuilder() + { + $entryGenerator = $this->entryGeneratorFactory(); + $newBuilder = new MySqlBuilder(); + $entryGenerator->resetBuilder( $newBuilder ); + $this->assertSame( $newBuilder, $entryGenerator->getBuilder( ) ); + } } diff --git a/src/CreatesSqlQueries.php b/src/CreatesSqlQueries.php index 546475d..dde4600 100644 --- a/src/CreatesSqlQueries.php +++ b/src/CreatesSqlQueries.php @@ -31,4 +31,12 @@ interface CreatesSqlQueries * @return MySqlBuilder */ public function getBuilder(); + + /** + * Reset the query builder + * + * @param MySqlBuilder|null $builder New builder or null to use default empty + * @return $this + */ + public function resetBuilder( MySqlBuilder $builder = null ); } diff --git a/src/QueryBuilder.php b/src/QueryBuilder.php index 67ef15c..22b17f3 100644 --- a/src/QueryBuilder.php +++ b/src/QueryBuilder.php @@ -44,6 +44,18 @@ abstract class QueryBuilder implements CreatesSqlQueries $this->tableName = $tableName; } + /** @inheritdoc */ + public function resetBuilder(MySqlBuilder $builder = null) + { + if( ! $builder ){ + $builder = new MySqlBuilder(); + } + + $this->builder = $builder; + return $this; + + } + /** * @return AbstractBaseQuery */ diff --git a/src/Select/SelectQueryBuilder.php b/src/Select/SelectQueryBuilder.php index 16f8fbf..57891b5 100644 --- a/src/Select/SelectQueryBuilder.php +++ b/src/Select/SelectQueryBuilder.php @@ -47,4 +47,6 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer $this->getCurrentQuery()->orderBy($column, $order); return $this; } + + } -- GitLab