Example #1
0
 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()));
 }
Example #2
0
 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);
 }
Example #4
0
 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);
     }
 }
Example #5
0
 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)]));
 }
Example #7
0
 private function Subtract(CoreExpression $Expression, $Value)
 {
     return Expression::BinaryOperation($Expression, O\Binary::Subtraction, Expression::Constant($Value));
 }
Example #8
0
 private function TrimDefaultCharacters(array &$ArgumentExpressions)
 {
     if (!isset($ArgumentExpressions[1])) {
         $ArgumentExpressions[1] = Expression::Constant(" \t\n\r\v");
     }
 }
Example #9
0
 public function MapConstantExpression($Value)
 {
     return Expression::Constant($Value);
 }
Example #10
0
 private function AddConstantDateTimeInterval(CoreExpression &$ObjectExpression, $Value, $Unit)
 {
     if ($Value !== 0) {
         $this->AddDateTimeInterval($ObjectExpression, Expression::Constant($Value), $Unit);
     }
 }
Example #11
0
 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);
     }
 }
Example #12
0
 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])));
     }
 }