smql 0.0.4.4 → 0.0.4.5
Sign up to get free protection for your applications and to get access to all the features.
- data/TODO +2 -0
- data/VERSION +1 -1
- data/lib/smql_to_ar/condition_types.rb +13 -6
- data/lib/smql_to_ar/query_builder.rb +3 -0
- metadata +3 -3
data/TODO
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.4.
|
1
|
+
0.0.4.5
|
@@ -99,7 +99,7 @@ class SmqlToAR
|
|
99
99
|
# Versuche das Objekt zu erkennen. Operator und Expected muessen passen.
|
100
100
|
# Passt das Object, die Klasse instanzieren.
|
101
101
|
def try_parse model, cols, op, val
|
102
|
-
#p :self => name, :try_parse => op, :cols => cols, :with => self::Operator, :value => val, :expected => self::Expected, :model => model.name
|
102
|
+
#p :class => self, :self => name, :try_parse => op, :cols => cols, :with => self::Operator, :value => val, :expected => self::Expected, :model => model.name
|
103
103
|
new model, cols, val if self::Operator === op and self::Expected.any?( &it === val)
|
104
104
|
end
|
105
105
|
|
@@ -109,6 +109,7 @@ class SmqlToAR
|
|
109
109
|
end
|
110
110
|
|
111
111
|
def initialize model, cols, val
|
112
|
+
#p init: self, caller: caller
|
112
113
|
@model, @cols = model, cols
|
113
114
|
@value = case val
|
114
115
|
when Hash, Range then val
|
@@ -151,7 +152,7 @@ class SmqlToAR
|
|
151
152
|
# #=> ( givenname = 'Peter' OR surname = 'Peter' ) AND ( givenname = 'Mueller' OR surname = 'Mueller' )
|
152
153
|
def build builder, table
|
153
154
|
values = Hash[ @value.collect {|value| [ builder.vid, value ] } ]
|
154
|
-
values.each {|k, v| builder.wobs k.
|
155
|
+
values.each {|k, v| builder.wobs k.to_sym => v }
|
155
156
|
if 1 == @cols.length
|
156
157
|
@cols.each do |col|
|
157
158
|
col.joins builder, table
|
@@ -177,7 +178,7 @@ class SmqlToAR
|
|
177
178
|
Where = "%s NOT BETWEEN %s AND %s"
|
178
179
|
Expected = [Range, lambda {|val| Array === val && 2 == val.length } ]
|
179
180
|
|
180
|
-
def
|
181
|
+
def initialize model, cols, val
|
181
182
|
if Array === val && 2 == val.length
|
182
183
|
f, l = val
|
183
184
|
f, l = Time.parse(f), Time.parse(l) if f.kind_of? String
|
@@ -187,7 +188,7 @@ class SmqlToAR
|
|
187
188
|
end
|
188
189
|
|
189
190
|
def build builder, table
|
190
|
-
builder.wobs (v1 = builder.vid) => @value.begin, (v2 = builder.vid) => @value.end
|
191
|
+
builder.wobs (v1 = builder.vid).to_sym => @value.begin, (v2 = builder.vid).to_sym => @value.end
|
191
192
|
@cols.each do |col|
|
192
193
|
col.joins builder, table
|
193
194
|
builder.where self.class::Where % [ builder.column( table+col.path, col.col), v1, v2]
|
@@ -242,13 +243,19 @@ class SmqlToAR
|
|
242
243
|
end
|
243
244
|
|
244
245
|
def build builder, table
|
246
|
+
if 2 < @cols.first.second.length
|
247
|
+
b2, b3 = And, Or
|
248
|
+
else
|
249
|
+
b2, b3 = Or, And
|
250
|
+
end
|
251
|
+
b2 = b2.new builder
|
245
252
|
@cols.each do |col, sub|
|
246
253
|
model, *sub = sub
|
247
254
|
t = table + col.path + [col.col]
|
248
255
|
col.joins.each {|j, m| builder.joins table+j, m }
|
249
256
|
builder.joins t, model
|
250
|
-
|
251
|
-
sub.each {|i| i.collect( &it.build( And.new(
|
257
|
+
b4 = b3.new( b2)
|
258
|
+
sub.each {|i| i.collect( &it.build( And.new( b4), t)) }
|
252
259
|
end
|
253
260
|
self
|
254
261
|
end
|
metadata
CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
|
|
6
6
|
- 0
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.0.4.
|
9
|
+
- 5
|
10
|
+
version: 0.0.4.5
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Denis Knauf
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-11-
|
18
|
+
date: 2011-11-28 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|