Skip to content

Commit c225cb7

Browse files
committed
Refactoring options: partial work
1 parent 2d53379 commit c225cb7

29 files changed

+120
-258
lines changed

src/BulkCompiler.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use Tequila\MongoDB\Exception\LogicException;
77
use Tequila\MongoDB\OptionsResolver\BulkWrite\BulkWriteResolver;
88
use Tequila\MongoDB\OptionsResolver\ResolverFactory;
9-
use Tequila\MongoDB\Util\TypeUtil;
109
use Tequila\MongoDB\Write\Model\WriteModelInterface;
1110

1211
class BulkCompiler implements BulkCompilerInterface
@@ -48,7 +47,7 @@ public function add($writeModels)
4847
sprintf(
4948
'Each write model must be an instance of "%s", "%s" given in $writeModels[%d]',
5049
WriteModelInterface::class,
51-
TypeUtil::getType($model),
50+
getType($model),
5251
$i
5352
)
5453
);

src/Client.php

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33
namespace Tequila\MongoDB;
44

5+
use MongoDB\Driver\ReadConcern;
56
use MongoDB\Driver\ReadPreference;
7+
use MongoDB\Driver\WriteConcern;
68
use Tequila\MongoDB\OptionsResolver\Command\DropDatabaseResolver;
79
use Tequila\MongoDB\Exception\UnexpectedResultException;
810
use Tequila\MongoDB\OptionsResolver\TypeMapResolver;
@@ -17,6 +19,21 @@ class Client
1719
*/
1820
private $manager;
1921

22+
/**
23+
* @var ReadConcern
24+
*/
25+
private $readConcern;
26+
27+
/**
28+
* @var ReadPreference
29+
*/
30+
private $readPreference;
31+
32+
/**
33+
* @var WriteConcern
34+
*/
35+
private $writeConcern;
36+
2037
/**
2138
* @param ManagerInterface $manager
2239
*/
@@ -35,13 +52,19 @@ public function __construct(ManagerInterface $manager)
3552
*/
3653
public function dropDatabase($databaseName, array $options = [])
3754
{
38-
$cursor = $this->commandBuilder
55+
$command = $this
56+
->getCommandBuilder()
3957
->createCommand(
4058
['dropDatabase' => 1],
4159
$options,
4260
DropDatabaseResolver::class
43-
)
44-
->execute($this->manager, $databaseName);
61+
);
62+
63+
$cursor = $this->manager->executeCommand(
64+
$databaseName,
65+
$command,
66+
$command->getReadPreference()
67+
);
4568

4669
$cursor->setTypeMap(TypeMapResolver::getDefault());
4770

src/Collection.php

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace Tequila\MongoDB;
44

5+
use MongoDB\Driver\ReadConcern;
56
use MongoDB\Driver\ReadPreference;
67
use MongoDB\Driver\WriteConcern;
78
use Tequila\MongoDB\OptionsResolver\Command\AggregateResolver;
@@ -16,10 +17,9 @@
1617
use Tequila\MongoDB\Exception\UnexpectedResultException;
1718
use Tequila\MongoDB\OptionsResolver\BulkWrite\BulkWriteResolver;
1819
use Tequila\MongoDB\OptionsResolver\DatabaseOptionsResolver;
19-
use Tequila\MongoDB\OptionsResolver\TypeMapResolver;
2020
use Tequila\MongoDB\OptionsResolver\ResolverFactory;
2121
use Tequila\MongoDB\Traits\CommandBuilderTrait;
22-
use Tequila\MongoDB\Util\TypeUtil;
22+
use Tequila\MongoDB\Traits\ExecuteCommandTrait;
2323
use Tequila\MongoDB\Write\Model\DeleteMany;
2424
use Tequila\MongoDB\Write\Model\DeleteOne;
2525
use Tequila\MongoDB\Write\Model\InsertOne;
@@ -35,6 +35,7 @@
3535
class Collection
3636
{
3737
use CommandBuilderTrait;
38+
use ExecuteCommandTrait;
3839

3940
/**
4041
* @var ManagerInterface
@@ -51,6 +52,21 @@ class Collection
5152
*/
5253
private $collectionName;
5354

55+
/**
56+
* @var ReadConcern
57+
*/
58+
private $readConcern;
59+
60+
/**
61+
* @var ReadPreference
62+
*/
63+
private $readPreference;
64+
65+
/**
66+
* @var WriteConcern
67+
*/
68+
private $writeConcern;
69+
5470
/**
5571
* @param ManagerInterface $manager
5672
* @param string $databaseName
@@ -294,7 +310,7 @@ public function findOneAndReplace(array $filter, $replacement, array $options =
294310
throw new InvalidArgumentException(
295311
sprintf(
296312
'$replacement must be an array or an object, %s given',
297-
TypeUtil::getType($replacement)
313+
getType($replacement)
298314
)
299315
);
300316
}
@@ -459,21 +475,4 @@ private static function extractBulkWriteOptions(array $options)
459475

460476
return [$bulkWriteOptions, $operationOptions];
461477
}
462-
463-
/**
464-
* @param array $command
465-
* @param array $options
466-
* @param $resolverClass
467-
* @return CursorInterface
468-
*/
469-
private function executeCommand(array $command, array $options, $resolverClass)
470-
{
471-
$cursor = $this->commandBuilder
472-
->createCommand($command, $options, $resolverClass)
473-
->execute($this->manager, $this->databaseName);
474-
475-
$cursor->setTypeMap(TypeMapResolver::getDefault());
476-
477-
return $cursor;
478-
}
479478
}

src/Command.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use MongoDB\Driver\ReadPreference;
66
use Tequila\MongoDB\OptionsResolver\Command\CompatibilityResolverInterface;
77

8-
class Command implements CommandInterface, CompiledCommandInterface
8+
class Command implements CommandInterface
99
{
1010
/**
1111
* @var array
@@ -47,16 +47,11 @@ public function getOptions(Server $server)
4747
}
4848

4949
/**
50-
* @param ManagerInterface $manager
51-
* @param string $databaseName
52-
* @return CursorInterface
50+
* @return ReadPreference
5351
*/
54-
public function execute(ManagerInterface $manager, $databaseName)
52+
public function getReadPreference()
5553
{
56-
$readPreference = $this->readPreference ?: new ReadPreference(ReadPreference::RP_PRIMARY);
57-
$cursor = $manager->executeCommand($databaseName, $this, $readPreference);
58-
59-
return $cursor;
54+
return $this->readPreference;
6055
}
6156

6257
/**
@@ -67,6 +62,9 @@ public function setReadPreference(ReadPreference $readPreference)
6762
$this->readPreference = $readPreference;
6863
}
6964

65+
/**
66+
* @param CompatibilityResolverInterface $resolver
67+
*/
7068
public function setCompatibilityResolver(CompatibilityResolverInterface $resolver)
7169
{
7270
$this->resolver = $resolver;

src/CommandBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
use Tequila\MongoDB\OptionsResolver\OptionsResolver;
1616
use Tequila\MongoDB\OptionsResolver\ResolverFactory;
1717

18-
class CommandBuilder implements CommandBuilderInterface
18+
class CommandBuilder
1919
{
2020
/**
2121
* @var ReadConcern

src/CommandBuilderInterface.php

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/CompiledCommandInterface.php

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/Database.php

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,22 @@
22

33
namespace Tequila\MongoDB;
44

5+
use MongoDB\Driver\ReadConcern;
56
use MongoDB\Driver\ReadPreference;
7+
use MongoDB\Driver\WriteConcern;
68
use Tequila\MongoDB\OptionsResolver\Command\CreateCollectionResolver;
79
use Tequila\MongoDB\OptionsResolver\Command\DropCollectionResolver;
810
use Tequila\MongoDB\OptionsResolver\Command\DropDatabaseResolver;
911
use Tequila\MongoDB\OptionsResolver\Command\ListCollectionsResolver;
1012
use Tequila\MongoDB\OptionsResolver\DatabaseOptionsResolver;
11-
use Tequila\MongoDB\OptionsResolver\TypeMapResolver;
13+
use Tequila\MongoDB\OptionsResolver\ResolverFactory;
1214
use Tequila\MongoDB\Traits\CommandBuilderTrait;
15+
use Tequila\MongoDB\Traits\ExecuteCommandTrait;
1316

1417
class Database
1518
{
1619
use CommandBuilderTrait;
20+
use ExecuteCommandTrait;
1721

1822
/**
1923
* @var ManagerInterface
@@ -25,6 +29,21 @@ class Database
2529
*/
2630
private $databaseName;
2731

32+
/**
33+
* @var ReadConcern
34+
*/
35+
private $readConcern;
36+
37+
/**
38+
* @var ReadPreference
39+
*/
40+
private $readPreference;
41+
42+
/**
43+
* @var WriteConcern
44+
*/
45+
private $writeConcern;
46+
2847
/**
2948
* @param ManagerInterface $manager
3049
* @param string $databaseName
@@ -41,7 +60,7 @@ public function __construct(ManagerInterface $manager, $databaseName, array $opt
4160
'writeConcern' => $this->manager->getWriteConcern(),
4261
];
4362

44-
$options = DatabaseOptionsResolver::resolve($options);
63+
$options = ResolverFactory::get(DatabaseOptionsResolver::class)->resolve($options);
4564

4665
$this->readConcern = $options['readConcern'];
4766
$this->readPreference = $options['readPreference'];
@@ -141,21 +160,4 @@ public function selectCollection($collectionName, array $options = [])
141160

142161
return new Collection($this->manager, $this->databaseName, $collectionName, $options);
143162
}
144-
145-
/**
146-
* @param array $command
147-
* @param array $options
148-
* @param $resolverClass
149-
* @return CursorInterface
150-
*/
151-
private function executeCommand(array $command, array $options, $resolverClass)
152-
{
153-
$cursor = $this->commandBuilder
154-
->createCommand($command, $options, $resolverClass)
155-
->execute($this->manager, $this->databaseName);
156-
157-
$cursor->setTypeMap(TypeMapResolver::getDefault());
158-
159-
return $cursor;
160-
}
161163
}

src/FindQuery.php

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
use Symfony\Component\OptionsResolver\Options;
88
use Tequila\MongoDB\Exception\InvalidArgumentException;
99
use Tequila\MongoDB\OptionsResolver\ResolverFactory;
10-
use Tequila\MongoDB\Util\CompatibilityChecker;
1110
use Tequila\MongoDB\OptionsResolver\OptionsResolver;
1211
use Tequila\MongoDB\OptionsResolver\TypeMapResolver;
1312
use Tequila\MongoDB\Traits\CachedResolverTrait;
14-
use Tequila\MongoDB\Util\TypeUtil;
1513

1614
class FindQuery implements QueryInterface
1715
{
@@ -51,7 +49,7 @@ public function __construct(array $filter, array $options = [])
5149
throw new InvalidArgumentException(
5250
sprintf(
5351
'$filter must be an array or an object, %s given',
54-
TypeUtil::getType($filter)
52+
getType($filter)
5553
)
5654
);
5755
}
@@ -73,11 +71,7 @@ public function getFilter()
7371
*/
7472
public function getOptions(ServerInfo $serverInfo)
7573
{
76-
return CompatibilityChecker::getInstance(
77-
$serverInfo,
78-
$this->compiledOptions,
79-
['collation', 'readConcern']
80-
)->resolve();
74+
8175
}
8276

8377
/**

src/OptionsResolver/BulkWrite/UpdateDocumentResolver.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,9 @@
44

55
use Tequila\MongoDB\Exception\InvalidArgumentException;
66
use Tequila\MongoDB\OptionsResolver\OptionsResolver;
7-
use Tequila\MongoDB\Traits\CachedResolverTrait;
87

98
class UpdateDocumentResolver extends OptionsResolver
109
{
11-
use CachedResolverTrait;
12-
1310
public function configureOptions()
1411
{
1512
$this->setDefined([

src/OptionsResolver/Command/AggregateResolver.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use Symfony\Component\OptionsResolver\Options;
88
use Tequila\MongoDB\OptionsResolver\Command\Traits\ReadConcernTrait;
99
use Tequila\MongoDB\OptionsResolver\Command\Traits\WriteConcernTrait;
10-
use Tequila\MongoDB\OptionsResolver\Command\CompatibilityResolverInterface;
1110
use Tequila\MongoDB\OptionsResolver\Configurator\CollationConfigurator;
1211
use Tequila\MongoDB\Exception\InvalidArgumentException;
1312
use Tequila\MongoDB\OptionsResolver\Configurator\DocumentValidationConfigurator;

src/OptionsResolver/Command/CountResolver.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use Tequila\MongoDB\OptionsResolver\Command\Traits\ReadConcernTrait;
77
use Tequila\MongoDB\OptionsResolver\Command\Traits\ReadPreferenceTrait;
88
use Tequila\MongoDB\Index;
9-
use Tequila\MongoDB\OptionsResolver\Command\CompatibilityResolverInterface;
109
use Tequila\MongoDB\OptionsResolver\OptionsResolver;
1110
use Tequila\MongoDB\CommandOptions;
1211

src/OptionsResolver/Command/CreateCollectionResolver.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
use Tequila\MongoDB\OptionsResolver\Command\Traits\WriteConcernCompatibilityTrait;
77
use Tequila\MongoDB\OptionsResolver\Command\Traits\WriteConcernTrait;
88
use Tequila\MongoDB\Exception\InvalidArgumentException;
9-
use Tequila\MongoDB\OptionsResolver\Command\CompatibilityResolverInterface;
109
use Tequila\MongoDB\OptionsResolver\OptionsResolver;
1110

1211
class CreateCollectionResolver extends OptionsResolver implements

0 commit comments

Comments
 (0)