smql 0.0.4 → 0.0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.4
1
+ 0.0.4.1
@@ -159,12 +159,13 @@ class SmqlToAR
159
159
  builder.where values.keys.collect {|vid| self.class::Where % [ col, vid.to_s ] }
160
160
  end
161
161
  else
162
+ b2 = SmqlToAR::And.new builder
162
163
  values.keys.each do |vid|
163
- builder.where @cols.collect {|col|
164
+ b2.where SmqlToAR::Or[ *@cols.collect {|col|
164
165
  col.joins builder, table
165
166
  col = builder.column table+col.path, col.col
166
167
  self.class::Where % [ col, vid.to_s ]
167
- }
168
+ }]
168
169
  end
169
170
  end
170
171
  self
@@ -229,7 +230,6 @@ class SmqlToAR
229
230
  super( *pars)
230
231
  @value = Array.wrap @value
231
232
  cols = {}
232
- p self: self, cols: @cols
233
233
  @cols.each do |col|
234
234
  col_model = col.relation
235
235
  cols[col] = [col_model] + @value.collect {|val| ConditionTypes.try_parse( col_model, val) }
@@ -250,7 +250,6 @@ class SmqlToAR
250
250
  b2 = 1 == sub.length ? builder : Or.new( builder)
251
251
  sub.each {|i| i.collect( &it.build( And.new( b2), t)); p 'or' => b2 }
252
252
  end
253
- ap '=>' => builder
254
253
  self
255
254
  end
256
255
  end
@@ -274,7 +273,7 @@ class SmqlToAR
274
273
  def initialize model, cols, val
275
274
  super model, cols, val[1]
276
275
  # sub: model, subquery, sub(condition)
277
- @cols.each {|col, sub| sub[ 1...1] = SmqlToAR.new( col.relation, val[0]).parse }
276
+ @cols.each {|col, sub| sub[ 1..-1] = SmqlToAR.new( col.relation, val[0]).parse, *sub[-1] }
278
277
  end
279
278
 
280
279
  def verify_column col
@@ -285,6 +284,7 @@ class SmqlToAR
285
284
  @cols.each do |col, sub|
286
285
  t = table+col.to_a
287
286
  builder.sub_joins t, col, *sub[0..1]
287
+ #ap sub: sub[2..-1]
288
288
  sub[2..-1].each &it.build( builder, t)
289
289
  end
290
290
  self
@@ -336,7 +336,6 @@ class SmqlToAR
336
336
 
337
337
  class <<self
338
338
  def try_parse model, func, args
339
- SmqlToAR.logger.info( { try_parse: [func,args]}.inspect)
340
339
  self.new model, func, args if self::Name === func and self::Expected.any?( &it === args)
341
340
  end
342
341
 
@@ -389,7 +388,7 @@ class SmqlToAR
389
388
 
390
389
  def build builder, table
391
390
  raise_unless 1 == table.length, RootOnlyFunctionError.new( table)
392
- builder.limit @args
391
+ builder.limit = Array.wrap(@args).first.to_i
393
392
  end
394
393
  end
395
394
 
@@ -399,12 +398,11 @@ class SmqlToAR
399
398
 
400
399
  def build builder, table
401
400
  raise_unless 1 == table.length, RootOnlyFunctionError.new( table)
402
- builder.offset @args
401
+ builder.offset = Array.wrap(@args).first.to_i
403
402
  end
404
403
  end
405
404
 
406
405
  def self.new model, col, val
407
- SmqlToAR.logger.info( { function: col.first.to_sym }.inspect)
408
406
  r = nil
409
407
  constants.each do |c|
410
408
  next if [:Function, :Where, :Expected, :Operator].include? c
@@ -79,7 +79,7 @@ class SmqlToAR
79
79
  end
80
80
 
81
81
  def build_join orig, pretable, table, prekey, key
82
- " LEFT OUTER JOIN #{orig} AS #{quote_table_name table} ON #{column pretable, prekey} = #{column table, key} "
82
+ " LEFT JOIN #{orig} AS #{quote_table_name table} ON #{column pretable, prekey} = #{column table, key} "
83
83
  end
84
84
 
85
85
  def sub_joins table, col, model, query
@@ -142,13 +142,12 @@ class SmqlToAR
142
142
  end
143
143
 
144
144
  def build_ar
145
- where_str = @_where.type_correction!.optimize!.tap {|x| p x }.build_where
145
+ where_str = @_where.type_correction!.optimize!.build_where
146
146
  incls = {}
147
147
  @_includes.each do |inc|
148
148
  b = incls
149
149
  inc[1..-1].collect {|rel| b = b[rel] ||= {} }
150
150
  end
151
- @logger.info where: where_str, wobs: @_wobs
152
151
  @model = @model.
153
152
  select( @_select.join( ', ')).
154
153
  joins( @_joins).
@@ -182,7 +181,6 @@ class SmqlToAR
182
181
  delegate :wobs, :joins, :includes, :sub_joins, :vid, :quote_column_name, :quoter, :quote_table_name, :column, :to => :parent
183
182
 
184
183
  def initialize parent, tmp = false
185
- p init: self, parent: parent
186
184
  @parent = parent
187
185
  @parent.where self unless @parend.nil? && tmp
188
186
  end
@@ -207,7 +205,6 @@ class SmqlToAR
207
205
  end
208
206
 
209
207
  def optimize!
210
- p optimize: self
211
208
  ext = []
212
209
  collect! do |sub|
213
210
  sub = sub.optimize! if sub.kind_of? Array
@@ -220,8 +217,6 @@ class SmqlToAR
220
217
  sub
221
218
  end
222
219
  end.compact!
223
- p optimized: self
224
- p ext: ext
225
220
  push *ext
226
221
  self
227
222
  end
@@ -231,18 +226,21 @@ class SmqlToAR
231
226
  end
232
227
  def default() SmqlToAR::And end
233
228
  def default_new( parent) default.new self, parent, false end
229
+ def collect_build_where
230
+ collect {|x| x.respond_to?( :build_where) ? x.build_where : x.to_s }
231
+ end
234
232
  end
235
233
 
236
234
  class And < SubBuilder
237
235
  def default; SmqlToAR::Or; end
238
236
  def build_where
239
- join ' AND '
237
+ collect_build_where.join ' AND '
240
238
  end
241
239
  end
242
240
 
243
241
  class Or < SubBuilder
244
242
  def build_where
245
- join ' OR '
243
+ collect_build_where.join ' OR '
246
244
  end
247
245
  end
248
246
  end
metadata CHANGED
@@ -6,7 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 0
8
8
  - 4
9
- version: 0.0.4
9
+ - 1
10
+ version: 0.0.4.1
10
11
  platform: ruby
11
12
  authors:
12
13
  - Denis Knauf
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2011-10-05 00:00:00 +02:00
18
+ date: 2011-10-06 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency