PHPixie/Database

View on GitHub
src/PHPixie/Database/Driver/Mongo.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace PHPixie\Database\Driver;

class Mongo extends \PHPixie\Database\Driver
{
    protected $conditionsParser;

    public function buildConnection($connectionName, $config)
    {
        return new \PHPixie\Database\Driver\Mongo\Connection($this, $connectionName, $config);
    }

    public function buildParserInstance($connectionName)
    {
        $connection      = $this->database->get($connectionName);
        $config          = $connection->config();
        $conditionsParser     = $this->conditionsParser();

        return $this->buildParser($config, $conditionsParser);
    }

    public function buildParser($config, $conditionsParser)
    {
        return new \PHPixie\Database\Driver\Mongo\Parser($this->database, $this, $config, $conditionsParser);
    }

    public function operatorParser()
    {
        return new \PHPixie\Database\Driver\Mongo\Parser\Operator;
    }

    public function conditionsParser()
    {
        if($this->conditionsParser === null) {
            $this->conditionsParser = $this->buildConditionsParserInstance();
        }

        return $this->conditionsParser;
    }
    
    public function queryBuilder()
    {
        $conditions = $this->conditions();
        $values = $this->database->values();

        return new \PHPixie\Database\Driver\Mongo\Query\Builder($conditions, $values);
    }

    public function buildConditions()
    {
        return new \PHPixie\Database\Driver\Mongo\Conditions();
    }
    
    public function buildConditionsParserInstance()
    {
        $conditions = $this->conditions();
        $operatorParser  = $this->operatorParser();
        return new \PHPixie\Database\Driver\Mongo\Parser\Conditions($this, $conditions, $operatorParser);
    }

    public function buildQuery($type, $connection, $parser, $builder)
    {
        $class = '\PHPixie\Database\Driver\Mongo\Query\Type\\'.ucfirst($type);

        return new $class($connection, $parser, $builder);
    }

    public function result($cursor)
    {
        return new \PHPixie\Database\Driver\Mongo\Result($cursor);
    }

    public function expandedGroup($condition = null)
    {
        return new \PHPixie\Database\Driver\Mongo\Parser\Conditions\ExpandedGroup($condition);
    }

    public function runner()
    {
        return new \PHPixie\Database\Driver\Mongo\Query\Runner;
    }

}