diff --git a/Tests/Integration/Features/QueryByUserIdTest.php b/Tests/Integration/Features/QueryByUserIdTest.php index b96643da4fa2c69f874a77f32746bd21eda1f44c..0347b9c9f22b25be46dda6f87067675a609dd1e1 100644 --- a/Tests/Integration/Features/QueryByUserIdTest.php +++ b/Tests/Integration/Features/QueryByUserIdTest.php @@ -25,7 +25,7 @@ class QueryByUserIdTest extends IntegrationTestCase ); wp_set_current_user( $userId ); $entryId = $this->createEntryWithEmail( $email ); - $queries = $this->entryQueriesFactory(); + $queries = $this->selectQueriesFactory(); $results = $queries->selectByUserId( $userId ); $this->assertEquals( $entryId, $results[0]['entry']->id); diff --git a/Tests/Integration/IntegrationTestCase.php b/Tests/Integration/IntegrationTestCase.php index 4e7621e3c47de2a6b3331f2eb1abbe58c5942002..0a6d0ed6f1fffb4b3b519253105de22c4c3baf4f 100755 --- a/Tests/Integration/IntegrationTestCase.php +++ b/Tests/Integration/IntegrationTestCase.php @@ -59,7 +59,7 @@ abstract class IntegrationTestCase extends \WP_UnitTestCase /** * @return SelectQueries */ - protected function entryQueriesFactory() + protected function selectQueriesFactory() { return new SelectQueries( diff --git a/Tests/Integration/EntryQueriesGeneratorsTest.php b/Tests/Integration/SelectQueriesGeneratorsTest.php similarity index 94% rename from Tests/Integration/EntryQueriesGeneratorsTest.php rename to Tests/Integration/SelectQueriesGeneratorsTest.php index ffcafbc6f2d8da43a8afcc07b98e3f52afb8b829..fff9fb518b36944316d95d0aa9255a1bd2a01600 100644 --- a/Tests/Integration/EntryQueriesGeneratorsTest.php +++ b/Tests/Integration/SelectQueriesGeneratorsTest.php @@ -11,7 +11,7 @@ use calderawp\CalderaFormsQuery\Tests\Traits\CanCreateEntryWithEmailField; use calderawp\CalderaFormsQuery\Tests\Traits\HasFactories; use calderawp\CalderaFormsQuery\Tests\Traits\UsersMockFormAsDBForm; -class EntryQueriesGeneratorsTest extends IntegrationTestCase +class SelectQueriesGeneratorsTest extends IntegrationTestCase { use CanCreateEntryWithEmailField; @@ -27,7 +27,7 @@ class EntryQueriesGeneratorsTest extends IntegrationTestCase $entryIdOne = $this->createEntryWithEmail($emailOne); $emailTwo = 'two@email.com'; $entryIdTwo = $this->createEntryWithEmail($emailTwo); - $entryQueries = $this->entryQueriesFactory(); + $entryQueries = $this->selectQueriesFactory(); //Email one by email $results = $entryQueries diff --git a/Tests/Integration/EntryQueriesTest.php b/Tests/Integration/SelectQueriesTest.php similarity index 88% rename from Tests/Integration/EntryQueriesTest.php rename to Tests/Integration/SelectQueriesTest.php index 1931b7ab802d97e9f8b787ba57d096e38f186421..318c551f87652f9119f6d1ef6c5701476bdab242 100644 --- a/Tests/Integration/EntryQueriesTest.php +++ b/Tests/Integration/SelectQueriesTest.php @@ -9,7 +9,7 @@ use calderawp\CalderaFormsQuery\Tests\Traits\CanCreateEntryWithEmailField; use calderawp\CalderaFormsQuery\Tests\Traits\HasFactories; use calderawp\CalderaFormsQuery\Tests\Traits\UsersMockFormAsDBForm; -class EntryQueriesTest extends IntegrationTestCase +class SelectQueriesTest extends IntegrationTestCase { use UsersMockFormAsDBForm; public function setUp() @@ -33,7 +33,7 @@ class EntryQueriesTest extends IntegrationTestCase $details = $this->create_entry( $this->mock_form ); global $wpdb; $sql = $wpdb->prepare( "SELECT COUNT(`id`) AS `total` FROM `" . $wpdb->prefix . "cf_form_entries` WHERE `form_id` = %s", $this->mock_form_id ); - $results = $this->entryQueriesFactory()->getResults( $sql ); + $results = $this->selectQueriesFactory()->getResults( $sql ); $this->assertTrue( ! empty( $results ) ); $this->assertEquals( 2, $results[0]->total); @@ -50,12 +50,12 @@ class EntryQueriesTest extends IntegrationTestCase { global $wpdb; $sql = $wpdb->prepare( "SELECT COUNT(`id`) AS `total` FROM `" . $wpdb->prefix . "cf_form_entries` WHERE `form_id` = %s", $this->mock_form_id ); - $resultsOne = $this->entryQueriesFactory()->getResults( $sql ); + $resultsOne = $this->selectQueriesFactory()->getResults( $sql ); $this->assertTrue( ! empty( $resultsOne ) ); $entry_details = $this->create_entry( $this->mock_form ); $sql = $wpdb->prepare("SELECT * FROM `" . $wpdb->prefix . "cf_form_entries` WHERE `id` = %s", $entry_details['id'] ); - $resultsTwo = $this->entryQueriesFactory()->getResults( $sql ); + $resultsTwo = $this->selectQueriesFactory()->getResults( $sql ); $this->assertTrue( ! empty( $resultsTwo ), var_export( $resultsTwo, true ) ); } diff --git a/Tests/Integration/TestsTest.php b/Tests/Integration/TestsTest.php index d4ecd31d3cfa38e18087ed6e0900c38edab6228e..145676d935db206ad931bb67851c84dcedcd3c9d 100644 --- a/Tests/Integration/TestsTest.php +++ b/Tests/Integration/TestsTest.php @@ -39,13 +39,13 @@ class TestsTest extends IntegrationTestCase /** * Test that factories work for integration tests * - * @covers HasFactories::entryQueriesFactory() + * @covers HasFactories::selectQueriesFactory() * @covers HasFactories::entryValuesGeneratorFactory() * @covers HasFactories::entryGeneratorFactory() */ public function testFactory() { - $this->assertTrue(is_a($this->entryQueriesFactory(), SelectQueries::class)); + $this->assertTrue(is_a($this->selectQueriesFactory(), SelectQueries::class)); $this->assertTrue(is_a($this->entryValuesGeneratorFactory(), EntryValues::class)); $this->assertTrue(is_a($this->entryGeneratorFactory(), Entry::class)); diff --git a/Tests/Traits/HasFactories.php b/Tests/Traits/HasFactories.php index 7c517ed51b43889c8aa6fab5cab9cc11aa48bbdf..1c948f23dde7bd4d69cff796d5b181b971ebb4d4 100644 --- a/Tests/Traits/HasFactories.php +++ b/Tests/Traits/HasFactories.php @@ -3,7 +3,9 @@ namespace calderawp\CalderaFormsQuery\Tests\Traits; +use calderawp\CalderaFormsQuery\DeleteQueries; use calderawp\CalderaFormsQuery\SelectQueries; +use calderawp\CalderaFormsQuery\Tests\Unit\Features\QueriesTest; trait HasFactories { @@ -66,7 +68,7 @@ trait HasFactories /** * @return SelectQueries */ - protected function entryQueriesFactory() + protected function selectQueriesFactory() { return new SelectQueries( @@ -76,6 +78,30 @@ trait HasFactories ); } + /** + * @return DeleteQueries + */ + protected function deleteQueriesFactory() + { + + return new DeleteQueries( + $this->entryDeleteGeneratorFactory(), + $this->entryValuesDeleteGeneratorFactory(), + $this->getWPDB() + ); + } + + /** + * @return \calderawp\CalderaFormsQuery\Features\Queries + */ + protected function featureQueriesFactory() + { + return new \calderawp\CalderaFormsQuery\Features\Queries( + $this->selectQueriesFactory(), + $this->deleteQueriesFactory() + ); + } + /** * Gets a WPDB instance * diff --git a/Tests/Unit/Delete/DeleteQueryBuilderTest.php b/Tests/Unit/Delete/DeleteQueryBuilderTest.php index 10db4db1da186121f14fc013f5ad92c48c2bc629..d7f95f094df62acadd480a95dd207f5a23e717bc 100644 --- a/Tests/Unit/Delete/DeleteQueryBuilderTest.php +++ b/Tests/Unit/Delete/DeleteQueryBuilderTest.php @@ -107,17 +107,17 @@ class DeleteQueryBuilderTest extends TestCase { $entryGenerator = $this->entryDeleteGeneratorFactory(); $newBuilder = new MySqlBuilder(); - $entryGenerator->resetBuilder( $newBuilder ); - $this->assertSame( $newBuilder, $entryGenerator->getBuilder( ) ); + $entryGenerator->resetBuilder($newBuilder); + $this->assertSame($newBuilder, $entryGenerator->getBuilder()); } public function testResetOfQuery() { $entryGenerator = $this->entryDeleteGeneratorFactory(); - $entryGenerator->deleteByUserId(55 ); + $entryGenerator->deleteByUserId(55); $entryGenerator->resetQuery(); - $entryGenerator->deleteByUserId( 42 ); - $this->assertTrue( is_int( strpos( $entryGenerator->getPreparedSql(), '42' ) ) ); - $this->assertTrue( ! is_int( strpos( $entryGenerator->getPreparedSql(), '55' ) ) ); + $entryGenerator->deleteByUserId(42); + $this->assertTrue(is_int(strpos($entryGenerator->getPreparedSql(), '42'))); + $this->assertTrue(! is_int(strpos($entryGenerator->getPreparedSql(), '55'))); } } diff --git a/Tests/Unit/DeleteQueriesTest.php b/Tests/Unit/DeleteQueriesTest.php new file mode 100644 index 0000000000000000000000000000000000000000..e9b3b6f23642e5adbfa78b5d5f3162b92eb3ee81 --- /dev/null +++ b/Tests/Unit/DeleteQueriesTest.php @@ -0,0 +1,46 @@ +<?php + + +namespace calderawp\CalderaFormsQuery\Tests\Unit; + +use calderawp\CalderaFormsQuery\Delete\Entry; +use calderawp\CalderaFormsQuery\Delete\EntryValues; + +class DeleteQueriesTest extends TestCase +{ + + /** + * Test getting entry SQL generator + * + * @covers DeleteQueries::getEntryGenerator() + * @covers DeleteQueries::$entryGenerator + */ + public function testGetEntryGenerator() + { + $queries = $this->deleteQueriesFactory(); + $this->assertTrue(is_a($queries->getEntryGenerator(), Entry::class)); + } + + /** + * Test getting entry values SQL generator + * + * @covers DeleteQueries::getEntryValueGenerator() + * @covers DeleteQueries::$entryValueGenerator + */ + public function testGetEntryValueGenerator() + { + $queries = $this->deleteQueriesFactory(); + $this->assertTrue(is_a($queries->getEntryValueGenerator(), EntryValues::class)); + } + + /** + * Test that getResults method returns an array + * + * @covers DeleteQueries::getResults() + */ + public function testGetResults() + { + $queries = $this->deleteQueriesFactory(); + $this->assertTrue(is_array($queries->getResults("SELECT `roy` FROM sivan WHERE mike = 'roy'"))); + } +} diff --git a/Tests/Unit/Features/FeatureContainerTest.php b/Tests/Unit/Features/FeatureContainerTest.php new file mode 100644 index 0000000000000000000000000000000000000000..300c1ce39750e20028551bab2aaf17f8c152748b --- /dev/null +++ b/Tests/Unit/Features/FeatureContainerTest.php @@ -0,0 +1,67 @@ +<?php + + +namespace calderawp\CalderaFormsQuery\Tests\Unit\Features; + + +use calderawp\CalderaContainers\Service\Container as TheServiceContainer; +use calderawp\CalderaFormsQuery\Features\DoesQueries; +use calderawp\CalderaFormsQuery\Features\FeatureContainer; +use calderawp\CalderaFormsQuery\Features\Queries; +use calderawp\CalderaFormsQuery\MySqlBuilder; +use calderawp\CalderaFormsQuery\Tests\Unit\TestCase; +use NilPortugues\Sql\QueryBuilder\Builder\BuilderInterface; + +class FeatureContainerTest extends TestCase +{ + + /** + * + * @covers FeatureContainer::getBuilder() + * @covers FeatureContainer::bindServices() + */ + public function testGetBuilder() + { + $serviceContainer = new TheServiceContainer(); + $container = new FeatureContainer($serviceContainer, $this->getWPDB()); + $this->assertTrue( is_object( $serviceContainer->make( MySqlBuilder::class ) ) ); + $this->assertTrue( is_object( $container->getBuilder() ) ); + + $this->assertTrue( + is_a( + $container->getBuilder(), + BuilderInterface::class + ) + ); + + $this->assertEquals( + $serviceContainer->make( MySqlBuilder::class ), + $container->getBuilder() + ); + + } + + /** + * + * @covers FeatureContainer::bindServices() + * @covers FeatureContainer::getQueries() + */ + public function testGetQueries() + { + $serviceContainer = new TheServiceContainer(); + $container = new FeatureContainer($serviceContainer, $this->getWPDB()); + + + $this->assertTrue( + is_a( + $container->getQueries(), + Queries::class + ) + ); + + $this->assertEquals( + $serviceContainer->make( Queries::class ), + $container->getQueries() + ); + } +} \ No newline at end of file diff --git a/Tests/Unit/Features/QueriesTest.php b/Tests/Unit/Features/QueriesTest.php new file mode 100644 index 0000000000000000000000000000000000000000..8a5bcd10d3bfc3f3c521834b72bd840bdb6ee6bc --- /dev/null +++ b/Tests/Unit/Features/QueriesTest.php @@ -0,0 +1,52 @@ +<?php +namespace calderawp\CalderaFormsQuery\Tests\Unit\Features; + +use calderawp\CalderaFormsQuery\Delete\Entry; +use calderawp\CalderaFormsQuery\Delete\EntryValues; +use calderawp\CalderaFormsQuery\Tests\Unit\TestCase; + +class QueriesTest extends TestCase +{ + /** + * Test getting entry delete SQL generator + * + * @covers Queries::entryDelete() + */ + public function testGetDeleteEntryGenerator() + { + $queries = $this->featureQueriesFactory(); + $this->assertTrue(is_a($queries->entryDelete(), Entry::class)); + } + + /** + * Test getting entry delete values SQL generator + * + * @covers Queries::entryValueDelete() + */ + public function testGetDeleteEntryValueGenerator() + { + $queries = $this->featureQueriesFactory(); + $this->assertTrue(is_a($queries->entryValueDelete(), EntryValues::class)); + } + /** + * Test getting entry select SQL generator + * + * @covers Queries::entrySelect() + */ + public function testGetSelectEntryGenerator() + { + $queries = $this->featureQueriesFactory(); + $this->assertTrue(is_a($queries->entrySelect(), \calderawp\CalderaFormsQuery\Select\Entry::class)); + } + + /** + * Test getting entry values select SQL generator + * + * @covers Queries::entryValuesSelect() + */ + public function testGetSelectEntryValueGenerator() + { + $queries = $this->featureQueriesFactory(); + $this->assertTrue(is_a($queries->entryValuesSelect(), \calderawp\CalderaFormsQuery\Select\EntryValues::class)); + } +} diff --git a/Tests/Unit/Select/SelectQueryBuilderTest.php b/Tests/Unit/Select/SelectQueryBuilderTest.php index f3a1555eacb3abdf823e2503e5e0592458786beb..522ffccff40adb4f18bb609886cdef984b6d2845 100644 --- a/Tests/Unit/Select/SelectQueryBuilderTest.php +++ b/Tests/Unit/Select/SelectQueryBuilderTest.php @@ -119,7 +119,7 @@ class SelectQueryBuilderTest extends TestCase { $entryGenerator = $this->entryGeneratorFactory(); $newBuilder = new MySqlBuilder(); - $entryGenerator->resetBuilder( $newBuilder ); - $this->assertSame( $newBuilder, $entryGenerator->getBuilder( ) ); + $entryGenerator->resetBuilder($newBuilder); + $this->assertSame($newBuilder, $entryGenerator->getBuilder()); } } diff --git a/Tests/Unit/EntryQueriesTest.php b/Tests/Unit/SelectQueriesTest.php similarity index 86% rename from Tests/Unit/EntryQueriesTest.php rename to Tests/Unit/SelectQueriesTest.php index c7f9b5a9c3974372ce3825a456a5114e38405974..0ef695d25be3f6bddcfda4fa908eb60d088850f8 100644 --- a/Tests/Unit/EntryQueriesTest.php +++ b/Tests/Unit/SelectQueriesTest.php @@ -8,7 +8,7 @@ use calderawp\CalderaFormsQuery\Select\Entry; use calderawp\CalderaFormsQuery\Select\EntryValues; use calderawp\CalderaFormsQuery\Select\SelectQueryBuilder; -class EntryQueriesTest extends TestCase +class SelectQueriesTest extends TestCase { /** @@ -19,7 +19,7 @@ class EntryQueriesTest extends TestCase */ public function testGetEntryGenerator() { - $queries = $this->entryQueriesFactory(); + $queries = $this->selectQueriesFactory(); $this->assertTrue(is_a($queries->getEntryGenerator(), Entry::class)); } @@ -31,7 +31,7 @@ class EntryQueriesTest extends TestCase */ public function testGetEntryValueGenerator() { - $queries = $this->entryQueriesFactory(); + $queries = $this->selectQueriesFactory(); $this->assertTrue(is_a($queries->getEntryValueGenerator(), EntryValues::class)); } @@ -42,8 +42,7 @@ class EntryQueriesTest extends TestCase */ public function testGetResults() { - $queries = $this->entryQueriesFactory(); + $queries = $this->selectQueriesFactory(); $this->assertTrue(is_array($queries->getResults("SELECT `roy` FROM sivan WHERE mike = 'roy'"))); } - } diff --git a/composer.json b/composer.json index a75cc4d39e7d86d2f36244c213f9562b10b1975f..ef179fa73ede6110e074b5141867b650a75e5d30 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,8 @@ ], "require": { "php": ">=5.6", - "nilportugues/sql-query-builder": "^1.5" + "nilportugues/sql-query-builder": "^1.5", + "calderawp/caldera-containers": "^0.1.1" }, "autoload": { "psr-4": { diff --git a/composer.lock b/composer.lock index 3a8a50c2469efb7854dcfa5762c05ebd4866665e..b411b10c50965b16edf6654abf2b13e4c0e574e3 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,50 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "90b8c6ac2ab8c558b28b1aea0f40cc18", + "content-hash": "736a984915e9e1f970336e5a8e5b38eb", "packages": [ + { + "name": "calderawp/caldera-containers", + "version": "0.1.1", + "source": { + "type": "git", + "url": "https://github.com/CalderaWP/caldera-containers.git", + "reference": "66eb851926e6872b4e8f5d5fdf7a1b80ebd43fba" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/CalderaWP/caldera-containers/zipball/66eb851926e6872b4e8f5d5fdf7a1b80ebd43fba", + "reference": "66eb851926e6872b4e8f5d5fdf7a1b80ebd43fba", + "shasum": "" + }, + "require": { + "php": "^5.6|^7.0", + "pimple/pimple": "^3.2", + "psr/container": "^1.0@dev" + }, + "require-dev": { + "jakub-onderka/php-parallel-lint": "^1.0", + "phpunit/phpunit": "5.0.*", + "squizlabs/php_codesniffer": "^3.2" + }, + "type": "libary", + "autoload": { + "psr-4": { + "calderawp\\CalderaContainers\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0" + ], + "authors": [ + { + "name": "josh", + "email": "josh@calderawp.com" + } + ], + "time": "2018-04-05T19:34:50+00:00" + }, { "name": "nilportugues/sql-query-builder", "version": "1.5.1", @@ -124,6 +166,105 @@ "tokenizer" ], "time": "2015-11-02T23:24:39+00:00" + }, + { + "name": "pimple/pimple", + "version": "v3.2.3", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32", + "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/container": "^1.0" + }, + "require-dev": { + "symfony/phpunit-bridge": "^3.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2.x-dev" + } + }, + "autoload": { + "psr-0": { + "Pimple": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Pimple, a simple Dependency Injection Container", + "homepage": "http://pimple.sensiolabs.org", + "keywords": [ + "container", + "dependency injection" + ], + "time": "2018-01-21T07:42:36+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" } ], "packages-dev": [ diff --git a/src/CreatesDeleteQueries.php b/src/CreatesDeleteQueries.php new file mode 100644 index 0000000000000000000000000000000000000000..f5852e7705c477d5b5b034ad7700d6678ff2d50a --- /dev/null +++ b/src/CreatesDeleteQueries.php @@ -0,0 +1,28 @@ +<?php + + +namespace calderawp\CalderaFormsQuery; + +use calderawp\CalderaFormsQuery\Delete\Entry; +use calderawp\CalderaFormsQuery\Delete\EntryValues; + +/** + * Interface CreatesDeleteQueries + * + * Interface that all classes that query for entries MUST impliment + */ +interface CreatesDeleteQueries extends GetsResults +{ + /** + * Get DELETE query generator for entry values SQL + * + * @return EntryValues + */ + public function getEntryValueGenerator(); + /** + * Get DELETE query generator for entry table SQL + * + * @return Entry + */ + public function getEntryGenerator(); +} diff --git a/src/CreatesSelectQueries.php b/src/CreatesSelectQueries.php index 0a26d997f6e18c04d1b712d7cd152e97a8c88dbf..0c1f9ea3b7431a6fa1d93c1827fd81addf2d5fb8 100644 --- a/src/CreatesSelectQueries.php +++ b/src/CreatesSelectQueries.php @@ -11,7 +11,7 @@ use calderawp\CalderaFormsQuery\Select\EntryValues; * * Interface that all classes that query for entries MUST impliment */ -interface CreatesSelectQueries +interface CreatesSelectQueries extends GetsResults { /** * Get generator for entry values SQL @@ -25,10 +25,4 @@ interface CreatesSelectQueries * @return Entry */ public function getEntryGenerator(); - - /** - * @param $sql - * @return \stdClass[] - */ - public function getResults($sql); } diff --git a/src/CreatesSqlQueries.php b/src/CreatesSqlQueries.php index 5b8eb833b25fc6fb9fe8aa41bb0602852dd5e1e1..8604d6faf1b1f67ed92815c681352fb18b190498 100644 --- a/src/CreatesSqlQueries.php +++ b/src/CreatesSqlQueries.php @@ -38,7 +38,7 @@ interface CreatesSqlQueries * @param MySqlBuilder|null $builder New builder or null to use default empty * @return $this */ - public function resetBuilder( MySqlBuilder $builder = null ); + public function resetBuilder(MySqlBuilder $builder = null); /** * Reset the query diff --git a/src/DeleteQueries.php b/src/DeleteQueries.php new file mode 100644 index 0000000000000000000000000000000000000000..ce437be31183708ef719a7e44bb37756ce9be9cf --- /dev/null +++ b/src/DeleteQueries.php @@ -0,0 +1,60 @@ +<?php + + +namespace calderawp\CalderaFormsQuery; + +use calderawp\CalderaFormsQuery\Delete\Entry; +use calderawp\CalderaFormsQuery\Delete\EntryValues; + +class DeleteQueries implements CreatesDeleteQueries +{ + + /** + * SQL generator for entry table + * + * @var Entry + */ + protected $entryGenerator; + + /** + * SQL generator for entry values table + * + * @var EntryValues + */ + protected $entryValueGenerator; + + + /** + * @var \wpdb + */ + protected $wpdb; + + public function __construct(Entry $entryGenerator, EntryValues $entryValueGenerator, \wpdb $wpdb) + { + $this->entryGenerator = $entryGenerator; + $this->entryValueGenerator = $entryValueGenerator; + $this->wpdb = $wpdb; + } + + /** @inheritdoc */ + public function getResults($sql) + { + $results = $this->wpdb->get_results($sql); + if (empty($results)) { + return []; + } + return $results; + } + + /** @inheritdoc */ + public function getEntryValueGenerator() + { + return $this->entryValueGenerator; + } + + /** @inheritdoc */ + public function getEntryGenerator() + { + return $this->entryGenerator; + } +} diff --git a/src/Features/DoesQueries.php b/src/Features/DoesQueries.php new file mode 100644 index 0000000000000000000000000000000000000000..43699bd5a6e6dd692a7df2ebc02478cd048dea32 --- /dev/null +++ b/src/Features/DoesQueries.php @@ -0,0 +1,10 @@ +<?php + + +namespace calderawp\CalderaFormsQuery\Features; + + +interface DoesQueries +{ + +} \ No newline at end of file diff --git a/src/Features/FeatureContainer.php b/src/Features/FeatureContainer.php new file mode 100644 index 0000000000000000000000000000000000000000..7fb00dd827be15d99909c2c89c3f159e67ef4961 --- /dev/null +++ b/src/Features/FeatureContainer.php @@ -0,0 +1,133 @@ +<?php + + +namespace calderawp\CalderaFormsQuery\Features; + + +use calderawp\CalderaContainers\Container; +use calderawp\CalderaContainers\Interfaces\ServiceContainer; + +use calderawp\CalderaFormsQuery\DeleteQueries; +use calderawp\CalderaFormsQuery\MySqlBuilder; +use calderawp\CalderaFormsQuery\Delete\Entry as EntryDelete; +use \calderawp\CalderaFormsQuery\Delete\EntryValues as EntryValuesDelete; +use \calderawp\CalderaFormsQuery\Select\Entry as EntrySelect; +use \calderawp\CalderaFormsQuery\Select\EntryValues as EntryValueSelect; +use calderawp\CalderaFormsQuery\SelectQueries; + +class FeatureContainer extends Container +{ + /** + * @var ServiceContainer + */ + protected $serviceContainer; + /** + * @var \wpdb + */ + protected $wpdb; + + /** + * FeatureContainer constructor. + * @param ServiceContainer $serviceContainer + * @param \wpdb $wpdb + */ + public function __construct(ServiceContainer $serviceContainer, \wpdb $wpdb ) + { + + $this->serviceContainer = $serviceContainer; + $this->wpdb = $wpdb; + $this->bindServices(); + } + + /** + * Bind services to service container + */ + protected function bindServices() + { + $this->serviceContainer->singleton( MySqlBuilder::class, function(){ + return new MySqlBuilder(); + }); + + $this->serviceContainer->bind( SelectQueries::class, function (){ + return new SelectQueries( + new EntrySelect( + $this->getBuilder(), + $this->entryTableName() + ), + new EntryValueSelect( + $this->getBuilder(), + $this->entryTableName() + ), + $this->wpdb + ); + }); + + $this->serviceContainer->bind( DeleteQueries::class, function (){ + return new DeleteQueries( + new EntryDelete( + $this->getBuilder(), + $this->entryTableName() + ), + new EntryValuesDelete( + $this->getBuilder(), + $this->entryTableName() + ), + $this->wpdb + ); + }); + + $this->serviceContainer->singleton( Queries::class, function(){ + return new Queries( + $this + ->serviceContainer + ->make( SelectQueries::class ), + $this + ->serviceContainer + ->make(DeleteQueries::class ) + ); + }); + } + + /** + * Get MySQL builder + * + * @return MySqlBuilder + */ + public function getBuilder() + { + return $this + ->serviceContainer + ->make( MySqlBuilder::class ); + } + + /** + * Get query runner + * + * @return Queries + */ + public function getQueries() + { + return $this + ->serviceContainer + ->make( Queries::class ); + } + + + + /** + * @return string + */ + protected function entryValueTableName(): string + { + return "{$this->wpdb->prefix}cf_form_entry_values"; + } + + /** + * @return string + */ + protected function entryTableName(): string + { + return "{$this->wpdb->prefix}cf_form_entries"; + } + +} \ No newline at end of file diff --git a/src/Features/Queries.php b/src/Features/Queries.php new file mode 100644 index 0000000000000000000000000000000000000000..55c0885b54e9292b99e0d62703caa9a8d6ed3317 --- /dev/null +++ b/src/Features/Queries.php @@ -0,0 +1,98 @@ +<?php + + +namespace calderawp\CalderaFormsQuery\Features; + +use calderawp\CalderaFormsQuery\CreatesDeleteQueries; +use calderawp\CalderaFormsQuery\CreatesSelectQueries; +use calderawp\CalderaFormsQuery\Delete\Entry as EntryDelete; +use \calderawp\CalderaFormsQuery\Delete\EntryValues as EntryValuesDelete; +use \calderawp\CalderaFormsQuery\Select\Entry as EntrySelect; +use \calderawp\CalderaFormsQuery\Select\EntryValues as EntryValueSelect; + +class Queries implements DoesQueries +{ + + + /** + * @var CreatesSelectQueries + */ + protected $selectQueries; + /** + * @var CreatesDeleteQueries + */ + protected $deleteQueries; + + /** + * Queries constructor. + * @param CreatesSelectQueries $selectQueries + * @param CreatesDeleteQueries $deleteQueries + */ + public function __construct(CreatesSelectQueries $selectQueries, CreatesDeleteQueries $deleteQueries) + { + $this->selectQueries = $selectQueries; + $this->deleteQueries = $deleteQueries; + } + + /** + * Create a new SELECT query for Entry table + * + * @return EntrySelect + */ + public function entrySelect() + { + $this + ->selectQueries + ->getEntryGenerator() + ->resetQuery(); + return $this + ->selectQueries + ->getEntryGenerator(); + } + + /** + * Create a new SELECT query for Entry value table + * + * @return EntryValueSelect + */ + public function entryValuesSelect() + { + $this + ->selectQueries + ->getEntryValueGenerator() + ->resetQuery(); + return $this + ->selectQueries + ->getEntryValueGenerator(); + } + + /** + * Create a new DELETE query for entries + * + * @return EntryDelete + */ + public function entryDelete() + { + $this + ->deleteQueries + ->getEntryGenerator() + ->resetQuery(); + return $this + ->deleteQueries + ->getEntryGenerator(); + } + + /** + * @return EntryValuesDelete + */ + public function entryValueDelete() + { + $this + ->deleteQueries + ->getEntryValueGenerator() + ->resetQuery(); + return $this + ->deleteQueries + ->getEntryValueGenerator(); + } +} diff --git a/src/GetsResults.php b/src/GetsResults.php new file mode 100644 index 0000000000000000000000000000000000000000..3a8a621ff2d71929aeccad6ac3f05f31b1fafcab --- /dev/null +++ b/src/GetsResults.php @@ -0,0 +1,13 @@ +<?php + + +namespace calderawp\CalderaFormsQuery; + +interface GetsResults +{ + /** + * @param $sql + * @return \stdClass[] + */ + public function getResults($sql); +} diff --git a/src/QueryBuilder.php b/src/QueryBuilder.php index 22b17f394ca7b842b4ea9654519d2346f291f800..3a9a311cddd15a7e2343cd4a887177805361153d 100644 --- a/src/QueryBuilder.php +++ b/src/QueryBuilder.php @@ -47,13 +47,12 @@ abstract class QueryBuilder implements CreatesSqlQueries /** @inheritdoc */ public function resetBuilder(MySqlBuilder $builder = null) { - if( ! $builder ){ + if (! $builder) { $builder = new MySqlBuilder(); } $this->builder = $builder; return $this; - } /** diff --git a/src/Select/SelectQueryBuilder.php b/src/Select/SelectQueryBuilder.php index d2b37f1f26b9bf71e7acbff415057f71a0ff4c41..eb45d074344e3c2efb45487a320e3a33e0d3ad17 100644 --- a/src/Select/SelectQueryBuilder.php +++ b/src/Select/SelectQueryBuilder.php @@ -60,6 +60,4 @@ abstract class SelectQueryBuilder extends QueryBuilder implements DoesSelectQuer { $this->selectQuery = new \NilPortugues\Sql\QueryBuilder\Manipulation\Select($this->getTableName()); } - - } diff --git a/src/SelectQueries.php b/src/SelectQueries.php index a64a0cb324319d8a76efd368399095a812cc9319..8b355cda6ba3d45aa14cfef736f87074aa1dff94 100644 --- a/src/SelectQueries.php +++ b/src/SelectQueries.php @@ -80,8 +80,6 @@ class SelectQueries implements CreatesSelectQueries $entries = $this->getResults($this->getEntryGenerator()->getPreparedSql()); return $this->collectResults($entries); - - } /** @@ -125,7 +123,6 @@ class SelectQueries implements CreatesSelectQueries 'entry' => $entry, 'values' => $entryValuesPrepared ]; - } return $results; }