/**
  * {@inheritdoc}
  */
 public function __invoke(SQLTransformer $transformer, Expression $expression, Configuration $config)
 {
     $left = $expression->getArg(0);
     $right = $expression->getArg(1);
     if (!$right->isValue()) {
         throw new \InvalidArgumentException('Only constant values allowed as right operands of contains expression');
     }
     return Clause::join($transformer->transform($left, $config), ' LIKE ', $transformer->transform(Expression\Expr::value('%' . $right->getValue() . '%'), $config));
 }
 /**
  * {@inheritdoc}
  */
 public function __invoke(SQLTransformer $transformer, Expression $expression, Configuration $config)
 {
     return Clause::join($this->prefix, $transformer->transform($expression->getArg(0), $config), $this->suffix);
 }
 /**
  * {@inheritdoc}
  */
 public function __invoke(SQLTransformer $transformer, Expression $expression, Configuration $config)
 {
     return $transformer->transform(Expression\Expr::all([Expression\Expr::isNotNull($expression->getArg(0)), Expression\Expr::neq($expression->getArg(0), Expression\Expr::value(''))]), $config);
 }
 /**
  * {@inheritdoc}
  */
 public function __invoke(SQLTransformer $transformer, Expression $expression, Configuration $config)
 {
     return Clause::implode(', ', $transformer->transformAll($expression->getArgs(), $config));
 }
 public function testUnsupportedExpressionException()
 {
     $this->expectException(\InvalidArgumentException::class);
     $this->transformer->transform($this->createMock(Expression::class), $this->config);
 }
 /**
  * {@inheritdoc}
  */
 public function __invoke(SQLTransformer $transformer, Expression $expression, Configuration $config)
 {
     $left = $transformer->transform($expression->getArg(0), $config);
     $right = $transformer->transform($expression->getArg(1), $config);
     return Clause::join($left, $this->operator, $right);
 }