public function DateInterval___construct(array $ArgumentExpressions) { if (!$ArgumentExpressions[0] instanceof EE\ConstantExpression) { throw new PlatformException('Call to DateInterval::__construct() must contain a single constant value'); } return Expression::Constant(new \DateInterval($ArgumentExpressions[0]->GetValue())); }
public function MapCastExpression($CastType, CoreExpression $CastValueExpression) { switch ($CastType) { case O\Cast::Boolean: return Expression::Conditional($CastValueExpression, Expression::Constant(1), Expression::Constant(0)); default: return Expression::Cast($CastType, $CastValueExpression); } }
public function __construct(ColumnData $ColumnData) { $ConstraintExpressions = []; foreach ($ColumnData as $ColumnIdentifier => $Value) { $Column = $ColumnData->GetColumn($ColumnIdentifier); $ConstraintExpressions[] = Expression::BinaryOperation(Expression::Column($Column), Binary::Equality, Expression::PersistData($Column, Expression::Constant($Value))); } parent::__construct($ConstraintExpressions, Binary::LogicalAnd); }
public function MapCastExpression($CastType, CoreExpression $CastValueExpression) { switch ($CastType) { case O\Cast::Boolean: return Expression::Conditional($CastValueExpression, Expression::Constant(1), Expression::Constant(0)); case O\Cast::Double: return Expression::BinaryOperation($CastValueExpression, O\Binary::Addition, Expression::Literal('0.0')); default: return Expression::Cast($CastType, $CastValueExpression); } }
public final function MapObjectExpression($Type, $Value) { if (isset($this->ObjectDataTypes[$Type])) { $ObjectDataType = $this->ObjectDataTypes[$Type]; return Expression::Constant($ObjectDataType->ToPersistedValue($Value)); } $MethodName = str_replace('\\', '_', $Type); if (!method_exists($this, $MethodName)) { throw new \Storm\Core\NotSupportedException('%s does not support mapping object instance of type %s', get_class($this), $Type); } return $this->{$MethodName}($Value); }
public function GetReviveExpression(CoreExpression $Expression) { $HexedGuid = Expression::FunctionCall('HEX', Expression::ValueList([$Expression])); $Substring = function ($Expression, $Index, $Length = null) { //Mysql substring index is 1 based $Arguments = [$Expression, Expression::Constant($Index + 1)]; if ($Length !== null) { $Arguments[] = Expression::Constant($Length); } return Expression::FunctionCall('SUBSTR', Expression::ValueList($Arguments)); }; return Expression::FunctionCall('CONCAT_WS', Expression::ValueList(['-', $Substring($HexedGuid, 12, 8), $Substring($HexedGuid, 4, 4), $Substring($HexedGuid, 0, 4), $Substring($HexedGuid, 8, 4), $Substring($HexedGuid, 20)])); }
private function Subtract(CoreExpression $Expression, $Value) { return Expression::BinaryOperation($Expression, O\Binary::Subtraction, Expression::Constant($Value)); }
private function TrimDefaultCharacters(array &$ArgumentExpressions) { if (!isset($ArgumentExpressions[1])) { $ArgumentExpressions[1] = Expression::Constant(" \t\n\r\v"); } }
public function MapConstantExpression($Value) { return Expression::Constant($Value); }
private function AddConstantDateTimeInterval(CoreExpression &$ObjectExpression, $Value, $Unit) { if ($Value !== 0) { $this->AddDateTimeInterval($ObjectExpression, Expression::Constant($Value), $Unit); } }
public final function AppendColumnData(Relational\Columns\Column $Column, $Value) { $ValueExpression = Relational\Expressions\Expression::Constant($Value); $PersistExpression = $Column->GetDataType()->GetPersistExpression($ValueExpression); if ($ValueExpression === $PersistExpression) { $this->AppendSingleValue($Value); } else { $this->ExpressionCompiler->Append($this, $PersistExpression); } }
public function AppendDataAsInlineRow(QueryBuilder $QueryBuilder, array $Columns, Relational\ColumnData $ColumnData) { $QueryBuilder->Append(' SELECT '); foreach ($QueryBuilder->Delimit($Columns, ', ') as $Column) { $QueryBuilder->AppendExpression(Expression::PersistData($Column, Expression::Constant($ColumnData[$Column]))); } }