Commit 624b294c authored by pi0's avatar pi0

Cleanup service provider

parent cb42e3b9
......@@ -14,11 +14,6 @@ class MongodbServiceProvider extends ServiceProvider
Model::setConnectionResolver($this->app['db']);
Model::setEventDispatcher($this->app['events']);
if (!defined('SHOULD_RETURN_COLLECTION')) {
$s = explode('.', \Illuminate\Foundation\Application::VERSION);
define('SHOULD_RETURN_COLLECTION', (10 * $s[0] + $s[1]) >= 53);
}
}
/**
......
......@@ -4,6 +4,7 @@ use Closure;
use DateTime;
use Illuminate\Database\Query\Builder as BaseBuilder;
use Illuminate\Database\Query\Expression;
use Illuminate\Support\Arr;
use Illuminate\Support\Collection;
use Jenssegers\Mongodb\Connection;
use MongoDB\BSON\ObjectID;
......@@ -77,6 +78,13 @@ class Builder extends BaseBuilder
'>=' => '$gte',
];
/**
* Check if we need to return Collections instead of plain arrays (laravel >= 5.3 )
*
* @var boolean
*/
protected $use_collection;
/**
* Create a new query builder instance.
*
......@@ -88,6 +96,8 @@ class Builder extends BaseBuilder
$this->grammar = new Grammar;
$this->connection = $connection;
$this->processor = $processor;
$s = explode('.', \Illuminate\Foundation\Application::VERSION);
$this->use_collection = (10 * $s[0] + $s[1]) >= 53;
}
/**
......@@ -206,8 +216,7 @@ class Builder extends BaseBuilder
// Translate count into sum.
if ($function == 'count') {
$group['aggregate'] = ['$sum' => 1];
}
// Pass other functions directly.
} // Pass other functions directly.
else {
$group['aggregate'] = ['$' . $function => '$' . $column];
}
......@@ -258,10 +267,8 @@ class Builder extends BaseBuilder
$results = iterator_to_array($this->collection->aggregate($pipeline, $options));
// Return results
return SHOULD_RETURN_COLLECTION ? new Collection($results) : $results;
}
// Distinct query
return $this->use_collection ? new Collection($results) : $results;
} // Distinct query
elseif ($this->distinct) {
// Return distinct results directly
$column = isset($this->columns[0]) ? $this->columns[0] : '_id';
......@@ -273,10 +280,8 @@ class Builder extends BaseBuilder
$result = $this->collection->distinct($column);
}
return SHOULD_RETURN_COLLECTION ? new Collection($result) : $result;
}
// Normal query
return $this->use_collection ? new Collection($result) : $result;
} // Normal query
else {
$columns = [];
......@@ -317,7 +322,7 @@ class Builder extends BaseBuilder
// Return results as an array with numeric keys
$results = iterator_to_array($cursor, false);
return SHOULD_RETURN_COLLECTION ? new Collection($results) : $results;
return $this->use_collection ? new Collection($results) : $results;
}
}
......@@ -363,7 +368,7 @@ class Builder extends BaseBuilder
$this->aggregate = null;
if (isset($results[0])) {
$result = (array) $results[0];
$result = (array)$results[0];
return $result['aggregate'];
}
......@@ -376,7 +381,7 @@ class Builder extends BaseBuilder
*/
public function exists()
{
return ! is_null($this->first());
return !is_null($this->first());
}
/**
......@@ -464,20 +469,20 @@ class Builder extends BaseBuilder
foreach ($values as $value) {
// As soon as we find a value that is not an array we assume the user is
// inserting a single document.
if (! is_array($value)) {
if (!is_array($value)) {
$batch = false;
break;
}
}
if (! $batch) {
if (!$batch) {
$values = [$values];
}
// Batch insert
$result = $this->collection->insertMany($values);
return (1 == (int) $result->isAcknowledged());
return (1 == (int)$result->isAcknowledged());
}
/**
......@@ -491,7 +496,7 @@ class Builder extends BaseBuilder
{
$result = $this->collection->insertOne($values);
if (1 == (int) $result->isAcknowledged()) {
if (1 == (int)$result->isAcknowledged()) {
if (is_null($sequence)) {
$sequence = '_id';
}
......@@ -511,7 +516,7 @@ class Builder extends BaseBuilder
public function update(array $values, array $options = [])
{
// Use $set as default operator.
if (! starts_with(key($values), '$')) {
if (!starts_with(key($values), '$')) {
$values = ['$set' => $values];
}
......@@ -530,7 +535,7 @@ class Builder extends BaseBuilder
{
$query = ['$inc' => [$column => $amount]];
if (! empty($extra)) {
if (!empty($extra)) {
$query['$set'] = $extra;
}
......@@ -581,7 +586,7 @@ class Builder extends BaseBuilder
{
$wheres = $this->compileWheres();
$result = $this->collection->DeleteMany($wheres);
if (1 == (int) $result->isAcknowledged()) {
if (1 == (int)$result->isAcknowledged()) {
return $result->getDeletedCount();
}
......@@ -610,7 +615,7 @@ class Builder extends BaseBuilder
{
$result = $this->collection->drop();
return (1 == (int) $result->ok);
return (1 == (int)$result->ok);
}
/**
......@@ -628,7 +633,7 @@ class Builder extends BaseBuilder
// Convert ObjectID's to strings so that lists can do its work.
$results = $results->map(function ($item) {
$item['_id'] = (string) $item['_id'];
$item['_id'] = (string)$item['_id'];
return $item;
});
......@@ -650,10 +655,8 @@ class Builder extends BaseBuilder
// Execute the closure on the mongodb collection
if ($expression instanceof Closure) {
return call_user_func($expression, $this->collection);
}
// Create an expression for the given value
elseif (! is_null($expression)) {
} // Create an expression for the given value
elseif (!is_null($expression)) {
return new Expression($expression);
}
......@@ -719,7 +722,7 @@ class Builder extends BaseBuilder
*/
public function drop($columns)
{
if (! is_array($columns)) {
if (!is_array($columns)) {
$columns = [$columns];
}
......@@ -754,13 +757,13 @@ class Builder extends BaseBuilder
protected function performUpdate($query, array $options = [])
{
// Update multiple items by default.
if (! array_key_exists('multiple', $options)) {
if (!array_key_exists('multiple', $options)) {
$options['multiple'] = true;
}
$wheres = $this->compileWheres();
$result = $this->collection->UpdateMany($wheres, $query, $options);
if (1 == (int) $result->isAcknowledged()) {
if (1 == (int)$result->isAcknowledged()) {
return $result->getModifiedCount() ? $result->getModifiedCount() : $result->getUpsertedCount();
}
......@@ -851,9 +854,7 @@ class Builder extends BaseBuilder
foreach ($where['values'] as &$value) {
$value = $this->convertKey($value);
}
}
// Single value.
} // Single value.
elseif (isset($where['value'])) {
$where['value'] = $this->convertKey($where['value']);
}
......@@ -905,20 +906,18 @@ class Builder extends BaseBuilder
$regex = preg_replace('#(^|[^\\\])%#', '$1.*', preg_quote($value));
// Convert like to regular expression.
if (! starts_with($value, '%')) {
if (!starts_with($value, '%')) {
$regex = '^' . $regex;
}
if (! ends_with($value, '%')) {
if (!ends_with($value, '%')) {
$regex = $regex . '$';
}
$value = new Regex($regex, 'i');
}
// Manipulate regexp operations.
} // Manipulate regexp operations.
elseif (in_array($operator, ['regexp', 'not regexp', 'regex', 'not regex'])) {
// Automatically convert regular expression strings to Regex objects.
if (! $value instanceof Regex) {
if (!$value instanceof Regex) {
$e = explode('/', $value);
$flag = end($e);
$regstr = substr($value, 1, -(strlen($flag) + 1));
......@@ -932,7 +931,7 @@ class Builder extends BaseBuilder
}
}
if (! isset($operator) or $operator == '=') {
if (!isset($operator) or $operator == '=') {
$query = [$column => $value];
} elseif (array_key_exists($operator, $this->conversion)) {
$query = [$column => [$this->conversion[$operator] => $value]];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment