Code Duplication    Length = 25-27 lines in 3 locations

source/Spiral/Database/Builders/Prototypes/AbstractSelect.php 1 location

@@ 421-445 (lines=25) @@
418
     *
419
     * @return \Closure
420
     */
421
    private function havingWrapper()
422
    {
423
        return function ($parameter) {
424
            if ($parameter instanceof FragmentInterface) {
425
                //We are only not creating bindings for plan fragments
426
                if (!$parameter instanceof ParameterInterface && !$parameter instanceof QueryBuilder) {
427
                    return $parameter;
428
                }
429
            }
430
431
            if (is_array($parameter)) {
432
                throw new BuilderException("Arrays must be wrapped with Parameter instance.");
433
            }
434
435
            //Wrapping all values with ParameterInterface
436
            if (!$parameter instanceof ParameterInterface && !$parameter instanceof ExpressionInterface) {
437
                $parameter = new Parameter($parameter, Parameter::DETECT_TYPE);
438
            };
439
440
            //Let's store to sent to driver when needed
441
            $this->havingParameters[] = $parameter;
442
443
            return $parameter;
444
        };
445
    }
446
}

source/Spiral/Database/Builders/Prototypes/AbstractWhere.php 1 location

@@ 346-370 (lines=25) @@
343
     *
344
     * @return \Closure
345
     */
346
    private function whereWrapper()
347
    {
348
        return function ($parameter) {
349
            if ($parameter instanceof FragmentInterface) {
350
                //We are only not creating bindings for plan fragments
351
                if (!$parameter instanceof ParameterInterface && !$parameter instanceof QueryBuilder) {
352
                    return $parameter;
353
                }
354
            }
355
356
            if (is_array($parameter)) {
357
                throw new BuilderException("Arrays must be wrapped with Parameter instance.");
358
            }
359
360
            //Wrapping all values with ParameterInterface
361
            if (!$parameter instanceof ParameterInterface && !$parameter instanceof ExpressionInterface) {
362
                $parameter = new Parameter($parameter, Parameter::DETECT_TYPE);
363
            };
364
365
            //Let's store to sent to driver when needed
366
            $this->whereParameters[] = $parameter;
367
368
            return $parameter;
369
        };
370
    }
371
}

source/Spiral/Database/Builders/Traits/JoinsTrait.php 1 location

@@ 336-362 (lines=27) @@
333
     *
334
     * @return \Closure
335
     */
336
    private function whereWrapper()
337
    {
338
        return function ($parameter) {
339
            if ($parameter instanceof FragmentInterface) {
340
                //We are only not creating bindings for plan fragments
341
                if (!$parameter instanceof ParameterInterface && !$parameter instanceof QueryBuilder) {
342
                    return $parameter;
343
                }
344
345
                return $parameter;
346
            }
347
348
            if (is_array($parameter)) {
349
                throw new BuilderException("Arrays must be wrapped with Parameter instance.");
350
            }
351
352
            //Wrapping all values with ParameterInterface
353
            if (!$parameter instanceof ParameterInterface && !$parameter instanceof ExpressionInterface) {
354
                $parameter = new Parameter($parameter, Parameter::DETECT_TYPE);
355
            };
356
357
            //Let's store to sent to driver when needed
358
            $this->onParameters[] = $parameter;
359
360
            return $parameter;
361
        };
362
    }
363
}