Code Duplication    Length = 30-30 lines in 2 locations

src/Engines/TNTSearchEngine.php 2 locations

@@ 197-226 (lines=30) @@
194
     *
195
     * @return Collection
196
     */
197
    public function map(Builder $builder, $results, $model)
198
    {
199
        if (empty($results['ids'])) {
200
            return Collection::make();
201
        }
202
203
        $keys = collect($results['ids'])->values()->all();
204
205
        $builder = $this->getBuilder($model);
206
207
        if ($this->builder->queryCallback) {
208
            call_user_func($this->builder->queryCallback, $builder);
209
        }
210
211
        $models = $builder->whereIn(
212
            $model->getQualifiedKeyName(), $keys
213
        )->get()->keyBy($model->getKeyName());
214
215
        // sort models by user choice
216
        if (!empty($this->builder->orders)) {
217
            return $models->values();
218
        }
219
220
        // sort models by tnt search result set
221
        return $model->newCollection($results['ids'])->map(function ($hit) use ($models) {
222
            if (isset($models[$hit])) {
223
                return $models[$hit];
224
            }
225
        })->filter()->values();
226
    }
227
228
    /**
229
     * Map the given results to instances of the given model via a lazy collection.
@@ 236-265 (lines=30) @@
233
     *
234
     * @return LazyCollection
235
     */
236
    public function lazyMap(Builder $builder, $results, $model)
237
    {
238
        if (empty($results['ids'])) {
239
            return LazyCollection::make();
240
        }
241
242
        $keys = collect($results['ids'])->values()->all();
243
244
        $builder = $this->getBuilder($model);
245
246
        if ($this->builder->queryCallback) {
247
            call_user_func($this->builder->queryCallback, $builder);
248
        }
249
250
        $models = $builder->whereIn(
251
            $model->getQualifiedKeyName(), $keys
252
        )->get()->keyBy($model->getKeyName());
253
254
        // sort models by user choice
255
        if (!empty($this->builder->orders)) {
256
            return $models->values();
257
        }
258
259
        // sort models by tnt search result set
260
        return $model->newCollection($results['ids'])->map(function ($hit) use ($models) {
261
            if (isset($models[$hit])) {
262
                return $models[$hit];
263
            }
264
        })->filter()->values();
265
    }
266
267
    /**
268
     * Return query builder either from given constraints, or as