This commit is contained in:
2023-01-11 15:28:47 +01:00
parent 4c51403daa
commit 05fd209204
7 changed files with 61 additions and 5 deletions

View File

@@ -0,0 +1,25 @@
<?php
namespace Core\Driver\SQL\Expression;
use Core\Driver\SQL\SQL;
class Coalesce extends Expression {
private array $values;
public function __construct(mixed ...$values) {
$this->values = $values;
}
function getExpression(SQL $sql, array &$params): string {
$values = implode(",", array_map(function ($value) use ($sql, &$params) {
if (is_string($value)) {
return $sql->columnName($value);
} else {
return $sql->addValue($value, $params);
}
}, $this->values));
return "COALESCE($values)";
}
}

View File

@@ -0,0 +1,22 @@
<?php
namespace Core\Driver\SQL\Expression;
use Core\Driver\SQL\SQL;
class NullIf extends Expression {
private mixed $lhs;
private mixed $rhs;
public function __construct(mixed $lhs, mixed $rhs) {
$this->lhs = $lhs;
$this->rhs = $rhs;
}
function getExpression(SQL $sql, array &$params): string {
$lhs = $sql->addValue($this->lhs, $params);
$rhs = $sql->addValue($this->rhs, $params);
return "NULLIF($lhs, $rhs)";
}
}