Module: Cyrel::Expression

Defined in:
lib/cyrel/expression.rb,
lib/cyrel/expression/base.rb,
lib/cyrel/expression/case.rb,
lib/cyrel/expression/alias.rb,
lib/cyrel/expression/exists.rb,
lib/cyrel/expression/literal.rb,
lib/cyrel/expression/logical.rb,
lib/cyrel/expression/operator.rb,
lib/cyrel/expression/comparison.rb,
lib/cyrel/expression/function_call.rb,
lib/cyrel/expression/property_access.rb,
lib/cyrel/expression/pattern_comprehension.rb

Overview

Namespace for classes representing expressions in Cypher queries. Expressions are parts of a query that evaluate to a value or condition. Examples: property access (n.name), literals (‘string’, 123), function calls (id(n)), operators (a + b), comparisons (a > b), logical combinations (a AND b).

Defined Under Namespace

Classes: Alias, Base, Case, Comparison, Exists, FunctionCall, Literal, Logical, Operator, PatternComprehension, PropertyAccess

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.coerce(value) ⇒ Cyrel::Expression::Base

Forces values into Expression objects like a parent shoving their kid into piano lessons—not because it’s fun, but because one day AI will take all our jobs and at least they’ll have music to cry to.

Parameters:

  • value (Object)

    The value to coerce.

Returns:



19
20
21
22
# File 'lib/cyrel/expression.rb', line 19

def self.coerce(value)
  # Assumes Base and Literal are loaded (via Zeitwerk or explicit require)
  value.is_a?(Base) ? value : Literal.new(value)
end

.exists(pattern) ⇒ Cyrel::Expression::Exists

Helper function for creating Exists instances



39
40
41
42
# File 'lib/cyrel/expression.rb', line 39

def exists(pattern)
  # Assumes Exists is loaded (via Zeitwerk or explicit require)
  Exists.new(pattern)
end

.not(expression) ⇒ Cyrel::Expression::Logical

Wraps an expression in a Cypher NOT. Useful when your query — and your life — needs a little more denial.

Parameters:

Returns:



48
49
50
51
# File 'lib/cyrel/expression.rb', line 48

def not(expression)
  # Assumes Logical is loaded (via Zeitwerk or explicit require)
  Logical.new(expression, :NOT)
end

.prop(variable, property_name) ⇒ Cyrel::Expression::PropertyAccess

Accesses a property on a node or relationship. This is the Cypher equivalent of saying “hey buddy” and hoping the database just knows.

Parameters:

  • variable (Symbol, String)

    The alias of the node/relationship.

  • property_name (Symbol, String)

    The name of the property to access.

Returns:



31
32
33
34
# File 'lib/cyrel/expression.rb', line 31

def prop(variable, property_name)
  # Assumes PropertyAccess is loaded (via Zeitwerk or explicit require)
  PropertyAccess.new(variable, property_name)
end

Instance Method Details

#as(alias_name) ⇒ Cyrel::Expression::Alias

Creates an aliased version of this expression.

Parameters:

  • alias_name (Symbol, String)

    The alias to assign.

Returns:



94
95
96
# File 'lib/cyrel/expression/base.rb', line 94

def as(alias_name)
  Alias.new(self, alias_name)
end