Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion src/Engines/Algolia3Engine.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,10 @@ public function update($models)
$model->scoutMetadata(),
['objectID' => $model->getScoutKey()],
);
})->filter()->values()->all();
})
->filter()
->values()
->all();

if (! empty($objects)) {
$index->saveObjects($objects);
Expand Down
5 changes: 4 additions & 1 deletion src/Engines/Algolia4Engine.php
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,10 @@ public function update($models)
$model->scoutMetadata(),
['objectID' => $model->getScoutKey()],
);
})->filter()->values()->all();
})
->filter()
->values()
->all();

if (! empty($objects)) {
$this->algolia->saveObjects($index, $objects);
Expand Down
65 changes: 31 additions & 34 deletions src/Engines/AlgoliaEngine.php
Original file line number Diff line number Diff line change
Expand Up @@ -129,18 +129,18 @@ public function paginate(Builder $builder, $perPage, $page)
*/
protected function filters(Builder $builder)
{
$wheres = collect($builder->wheres)->map(function ($value, $key) {
return $key.'='.$value;
})->values();
$wheres = collect($builder->wheres)
->map(fn ($value, $key) => $key.'='.$value)
->values();

return $wheres->merge(collect($builder->whereIns)->map(function ($values, $key) {
if (empty($values)) {
return '0=1';
}

return collect($values)->map(function ($value) use ($key) {
return $key.'='.$value;
})->all();
return collect($values)
->map(fn ($value) => $key.'='.$value)
->all();
})->values())->values()->all();
}

Expand Down Expand Up @@ -173,23 +173,21 @@ public function map(Builder $builder, $results, $model)

$objectIdPositions = array_flip($objectIds);

return $model->getScoutModelsByIds(
$builder, $objectIds
)->filter(function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds);
})->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];
return $model->getScoutModelsByIds($builder, $objectIds)
->filter(fn ($model) => in_array($model->getScoutKey(), $objectIds))
->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];

foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
}
}
}

return $model;
})->sortBy(function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})->values();
return $model;
})
->sortBy(fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

/**
Expand All @@ -209,23 +207,22 @@ public function lazyMap(Builder $builder, $results, $model)
$objectIds = collect($results['hits'])->pluck('objectID')->values()->all();
$objectIdPositions = array_flip($objectIds);

return $model->queryScoutModelsByIds(
$builder, $objectIds
)->cursor()->filter(function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds);
})->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];
return $model->queryScoutModelsByIds($builder, $objectIds)
->cursor()
->filter(fn ($model) => in_array($model->getScoutKey(), $objectIds))
->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];

foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
}
}
}

return $model;
})->sortBy(function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})->values();
return $model;
})
->sortBy(fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

/**
Expand Down
33 changes: 14 additions & 19 deletions src/Engines/CollectionEngine.php
Original file line number Diff line number Diff line change
Expand Up @@ -199,19 +199,16 @@ public function map(Builder $builder, $results, $model)
}

$objectIds = collect($results)
->pluck($model->getScoutKeyName())
->values()
->all();
->pluck($model->getScoutKeyName())
->values()
->all();

$objectIdPositions = array_flip($objectIds);

return $model->getScoutModelsByIds(
$builder, $objectIds
)->filter(function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds);
})->sortBy(function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})->values();
return $model->getScoutModelsByIds($builder, $objectIds)
->filter(fn ($model) => in_array($model->getScoutKey(), $objectIds))
->sortBy(fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

/**
Expand All @@ -231,18 +228,16 @@ public function lazyMap(Builder $builder, $results, $model)
}

$objectIds = collect($results)
->pluck($model->getScoutKeyName())
->values()->all();
->pluck($model->getScoutKeyName())
->values()->all();

$objectIdPositions = array_flip($objectIds);

return $model->queryScoutModelsByIds(
$builder, $objectIds
)->cursor()->filter(function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds);
})->sortBy(function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})->values();
return $model->queryScoutModelsByIds($builder, $objectIds)
->cursor()
->filter(fn ($model) => in_array($model->getScoutKey(), $objectIds))
->sortBy(fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

/**
Expand Down
87 changes: 44 additions & 43 deletions src/Engines/MeilisearchEngine.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,10 @@ public function update($models)
$model->scoutMetadata(),
[$model->getScoutKeyName() => $model->getScoutKey()],
);
})->filter()->values()->all();
})
->filter()
->values()
->all();

if (! empty($objects)) {
$index->addDocuments($objects, $models->first()->getScoutKeyName());
Expand Down Expand Up @@ -176,19 +179,20 @@ protected function performSearch(Builder $builder, array $searchParams = [])
*/
protected function filters(Builder $builder)
{
$filters = collect($builder->wheres)->map(function ($value, $key) {
if (is_bool($value)) {
return sprintf('%s=%s', $key, $value ? 'true' : 'false');
}
$filters = collect($builder->wheres)
->map(function ($value, $key) {
if (is_bool($value)) {
return sprintf('%s=%s', $key, $value ? 'true' : 'false');
}

if (is_null($value)) {
return sprintf('%s %s', $key, 'IS NULL');
}
if (is_null($value)) {
return sprintf('%s %s', $key, 'IS NULL');
}

return is_numeric($value)
? sprintf('%s=%s', $key, $value)
: sprintf('%s="%s"', $key, $value);
});
return is_numeric($value)
? sprintf('%s=%s', $key, $value)
: sprintf('%s="%s"', $key, $value);
});

$whereInOperators = [
'whereIns' => 'IN',
Expand Down Expand Up @@ -219,9 +223,9 @@ protected function filters(Builder $builder)
*/
protected function buildSortFromOrderByClauses(Builder $builder): array
{
return collect($builder->orders)->map(function (array $order) {
return $order['column'].':'.$order['direction'];
})->toArray();
return collect($builder->orders)
->map(fn (array $order) => $order['column'].':'.$order['direction'])
->toArray();
}

/**
Expand Down Expand Up @@ -288,23 +292,21 @@ public function map(Builder $builder, $results, $model)

$objectIdPositions = array_flip($objectIds);

return $model->getScoutModelsByIds(
$builder, $objectIds
)->filter(function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds);
})->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];
return $model->getScoutModelsByIds($builder, $objectIds)
->filter(fn ($model) => in_array($model->getScoutKey(), $objectIds))
->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];

foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
}
}
}

return $model;
})->sortBy(function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})->values();
return $model;
})
->sortBy(fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

/**
Expand All @@ -323,23 +325,22 @@ public function lazyMap(Builder $builder, $results, $model)
$objectIds = collect($results['hits'])->pluck($model->getScoutKeyName())->values()->all();
$objectIdPositions = array_flip($objectIds);

return $model->queryScoutModelsByIds(
$builder, $objectIds
)->cursor()->filter(function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds);
})->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];
return $model->queryScoutModelsByIds($builder, $objectIds)
->cursor()
->filter(fn ($model) => in_array($model->getScoutKey(), $objectIds))
->map(function ($model) use ($results, $objectIdPositions) {
$result = $results['hits'][$objectIdPositions[$model->getScoutKey()]] ?? [];

foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
foreach ($result as $key => $value) {
if (substr($key, 0, 1) === '_') {
$model->withScoutMetadata($key, $value);
}
}
}

return $model;
})->sortBy(function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})->values();
return $model;
})
->sortBy(fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

/**
Expand Down
21 changes: 8 additions & 13 deletions src/Engines/TypesenseEngine.php
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,10 @@ public function update($models)
$searchableData,
$model->scoutMetadata(),
);
})->filter()->values()->all();
})
->filter()
->values()
->all();

if (! empty($objects)) {
$this->importDocuments(
Expand Down Expand Up @@ -516,12 +519,8 @@ public function map(Builder $builder, $results, $model)
$objectIdPositions = array_flip($objectIds);

return $model->getScoutModelsByIds($builder, $objectIds)
->filter(static function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds, false);
})
->sortBy(static function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})
->filter(static fn ($model) => in_array($model->getScoutKey(), $objectIds, false))
->sortBy(static fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

Expand All @@ -548,12 +547,8 @@ public function lazyMap(Builder $builder, $results, $model)

return $model->queryScoutModelsByIds($builder, $objectIds)
->cursor()
->filter(static function ($model) use ($objectIds) {
return in_array($model->getScoutKey(), $objectIds, false);
})
->sortBy(static function ($model) use ($objectIdPositions) {
return $objectIdPositions[$model->getScoutKey()];
})
->filter(static fn ($model) => in_array($model->getScoutKey(), $objectIds, false))
->sortBy(static fn ($model) => $objectIdPositions[$model->getScoutKey()])
->values();
}

Expand Down