Class: Cassie::Statements::Statement::Relation

Inherits:
Object
  • Object
show all
Defined in:
lib/cassie/statements/statement/relation.rb

Overview

relation :username, :eq

relation :username, :eq, value: :method
relation :phone, :in
relation :user_id, :gteq, term: "minTimeuuid('2013-02-02 10:00+0000')"

Constant Summary collapse

OPERATIONS =
{
              eq: "=",
              lt: "<",
              lteq: "<=",
              gt: ">",
              gteq: ">=",
              in: "IN",
              contains: "CONTAINS",
              contains_key: "CONTAINS KEY",
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source, identifier, op_type, value_method, opts = {}) ⇒ Relation

Returns a new instance of Relation.



30
31
32
33
34
35
36
37
# File 'lib/cassie/statements/statement/relation.rb', line 30

def initialize(source, identifier, op_type, value_method, opts={})
  @source = source
  @identifier = identifier
  @operation = OPERATIONS[op_type.to_sym]
  @value_method = value_method
  @enabled = opts.has_key?(:if) ? source_eval(opts[:if]) : true
  @term = opts.has_key?(:term) ? source_eval(opts[:term]) : "?"
end

Instance Attribute Details

#enabledObject (readonly)

Returns the value of attribute enabled.



22
23
24
# File 'lib/cassie/statements/statement/relation.rb', line 22

def enabled
  @enabled
end

#identifierObject (readonly)

Returns the value of attribute identifier.



22
23
24
# File 'lib/cassie/statements/statement/relation.rb', line 22

def identifier
  @identifier
end

#operationObject (readonly)

Returns the value of attribute operation.



22
23
24
# File 'lib/cassie/statements/statement/relation.rb', line 22

def operation
  @operation
end

#sourceObject (readonly)

Returns the value of attribute source.



22
23
24
# File 'lib/cassie/statements/statement/relation.rb', line 22

def source
  @source
end

#termObject (readonly)

Returns the value of attribute term.



22
23
24
# File 'lib/cassie/statements/statement/relation.rb', line 22

def term
  @term
end

#value_methodObject (readonly)

Returns the value of attribute value_method.



22
23
24
# File 'lib/cassie/statements/statement/relation.rb', line 22

def value_method
  @value_method
end

Instance Method Details

#argumentObject



52
53
54
# File 'lib/cassie/statements/statement/relation.rb', line 52

def argument
  value if argument?
end

#argument?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/cassie/statements/statement/relation.rb', line 43

def argument?
  enabled? && positional?
end

#enabled?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/cassie/statements/statement/relation.rb', line 39

def enabled?
  !!enabled
end

#positional?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/cassie/statements/statement/relation.rb', line 56

def positional?
  term.to_s.include?("?")
end

#to_cqlObject



60
61
62
63
# File 'lib/cassie/statements/statement/relation.rb', line 60

def to_cql
  return nil unless enabled?
  "#{identifier} #{operation} #{term}"
end

#valueObject



47
48
49
50
# File 'lib/cassie/statements/statement/relation.rb', line 47

def value
  return(@value) if defined?(@value)
  @value = source.send(value_method)
end