1: <?php
2:
3: namespace PHPixie\Database\Driver;
4:
5: class Mongo extends \PHPixie\Database\Driver
6: {
7: protected $conditionsParser;
8:
9: public function buildConnection($connectionName, $config)
10: {
11: return new \PHPixie\Database\Driver\Mongo\Connection($this, $connectionName, $config);
12: }
13:
14: public function buildParserInstance($connectionName)
15: {
16: $connection = $this->database->get($connectionName);
17: $config = $connection->config();
18: $conditionsParser = $this->conditionsParser();
19:
20: return $this->buildParser($config, $conditionsParser);
21: }
22:
23: public function buildParser($config, $conditionsParser)
24: {
25: return new \PHPixie\Database\Driver\Mongo\Parser($this->database, $this, $config, $conditionsParser);
26: }
27:
28: public function operatorParser()
29: {
30: return new \PHPixie\Database\Driver\Mongo\Parser\Operator;
31: }
32:
33: public function conditionsParser()
34: {
35: if($this->conditionsParser === null) {
36: $this->conditionsParser = $this->buildConditionsParserInstance();
37: }
38:
39: return $this->conditionsParser;
40: }
41:
42: public function queryBuilder()
43: {
44: $conditions = $this->conditions();
45: $values = $this->database->values();
46:
47: return new \PHPixie\Database\Driver\Mongo\Query\Builder($conditions, $values);
48: }
49:
50: public function buildConditions()
51: {
52: return new \PHPixie\Database\Driver\Mongo\Conditions();
53: }
54:
55: public function buildConditionsParserInstance()
56: {
57: $conditions = $this->conditions();
58: $operatorParser = $this->operatorParser();
59: return new \PHPixie\Database\Driver\Mongo\Parser\Conditions($this, $conditions, $operatorParser);
60: }
61:
62: public function buildQuery($type, $connection, $parser, $builder)
63: {
64: $class = '\PHPixie\Database\Driver\Mongo\Query\Type\\'.ucfirst($type);
65:
66: return new $class($connection, $parser, $builder);
67: }
68:
69: public function result($cursor)
70: {
71: return new \PHPixie\Database\Driver\Mongo\Result($cursor);
72: }
73:
74: public function expandedGroup($condition = null)
75: {
76: return new \PHPixie\Database\Driver\Mongo\Parser\Conditions\ExpandedGroup($condition);
77: }
78:
79: public function runner()
80: {
81: return new \PHPixie\Database\Driver\Mongo\Query\Runner;
82: }
83:
84: }
85: