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, ExistsBlock, 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