Module: OrientSupport::Support
- Included in:
- ActiveOrient::API, ActiveOrient::OrientDB, ModelClass, Array, Hash, MatchConnection, MatchStatement, OrientQuery
- Defined in:
- lib/support/orientquery.rb
Instance Method Summary collapse
- #as(a = nil) ⇒ Object
- #compose_where(*arg, &b) ⇒ Object
-
#generate_sql_list(attributes = {}, &b) ⇒ Object
designs a list of “Key = Value” pairs combined by “and” or the binding provided by the block ORD.generate_sql_list where: 25 , upper: ‘65’ => “where = 25 and upper = ‘65’” ORD.generate_sql_list( con_id: 25 , symbol: :G) { ‘,’ } => “con_id = 25 , symbol = ‘G’”.
-
#where(value = nil) ⇒ Object
:nodoc:.
-
#while_s(value = nil) ⇒ Object
while and where depend on @q, a struct.
Instance Method Details
#as(a = nil) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/support/orientquery.rb', line 93 def as a=nil if a @q[:as] = a # subsequent calls overwrite older entries else if @q[:as].blank? nil else "as: #{ @q[:as] }" end end end |
#compose_where(*arg, &b) ⇒ Object
20 21 22 23 24 25 26 27 |
# File 'lib/support/orientquery.rb', line 20 def compose_where *arg , &b arg = arg.flatten.compact unless arg.blank? g= generate_sql_list( arg , &b) "where #{g}" unless g.empty? end end |
#generate_sql_list(attributes = {}, &b) ⇒ Object
designs a list of “Key = Value” pairs combined by “and” or the binding provided by the block
ORD.generate_sql_list where: 25 , upper: '65'
=> "where = 25 and upper = '65'"
ORD.generate_sql_list( con_id: 25 , symbol: :G) { ',' }
=> "con_id = 25 , symbol = 'G'"
If »NULL« should be addressed, { key: nil } is translated to “key = NULL” (used by set: in update and upsert), { key: [nil] } is translated to “key is NULL” ( used by where )
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/support/orientquery.rb', line 40 def generate_sql_list attributes = {}, &b fill = block_given? ? yield : 'and' case attributes when ::Hash attributes.map do |key, value| case value when nil "#{key} = NULL" when ::Array if value == [nil] "#{key} is NULL" else "#{key} in #{value.to_orient}" end when Range "#{key} between #{value.first} and #{value.last} " else # String, Symbol, Time, Trueclass, Falseclass ... "#{key} = #{value.to_or}" end end.join(" #{fill} ") when ::Array attributes.map{|y| generate_sql_list y, &b }.join( " #{fill} " ) when String attributes when Symbol, Numeric attributes.to_s end end |
#where(value = nil) ⇒ Object
:nodoc:
80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/support/orientquery.rb', line 80 def where value=nil # :nodoc: if value.present? if value.is_a?( Hash ) && value.size >1 value.each {| a,b| where( {a => b} ) } else @q[:where] << value end self elsif @q[:where].present? "where #{ generate_sql_list( @q[:where] ){ @fill || 'and' } }" end end |
#while_s(value = nil) ⇒ Object
while and where depend on @q, a struct
72 73 74 75 76 77 78 79 |
# File 'lib/support/orientquery.rb', line 72 def while_s value=nil # :nodoc: if value.present? @q[:while] << value self elsif @q[:while].present? "while #{ generate_sql_list( @q[:while] ) }" end end |