smql 0.0.5.1 → 0.0.5.2

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5.1
1
+ 0.0.5.2
@@ -153,7 +153,7 @@ class SmqlToAR
153
153
  # 2) {"givenname=", ["Peter", "Hans"]} #=> ( givenname = 'Peter' OR givenname = 'Hans' )
154
154
  # 3) {"givenname|surname=", ["Peter", "Mueller"]}
155
155
  # #=> ( givenname = 'Peter' OR surname = 'Peter' ) AND ( givenname = 'Mueller' OR surname = 'Mueller' )
156
- def build builder, table
156
+ def condition_build builder, table
157
157
  values = Hash[ @value.collect {|value| [ builder.vid, value ] } ]
158
158
  values.each {|k, v| builder.wobs k.to_sym => v }
159
159
  if 1 == @cols.length
@@ -174,6 +174,7 @@ class SmqlToAR
174
174
  end
175
175
  self
176
176
  end
177
+ alias build condition_build
177
178
  end
178
179
 
179
180
  class NotInRange < Condition
@@ -190,7 +191,7 @@ class SmqlToAR
190
191
  super model, cols, val
191
192
  end
192
193
 
193
- def build builder, table
194
+ def not_in_range_build builder, table
194
195
  builder.wobs (v1 = builder.vid).to_sym => @value.begin, (v2 = builder.vid).to_sym => @value.end
195
196
  @cols.each do |col|
196
197
  col.joins builder, table
@@ -198,11 +199,12 @@ class SmqlToAR
198
199
  end
199
200
  self
200
201
  end
202
+ alias build not_in_range_build
201
203
  end
202
204
  InRange = simple_condition NotInRange, '..', '%s BETWEEN %s AND %s'
203
205
 
204
- class NotOverlaps < Condition
205
- Operator, Where = '<!>', 'NOT (%s, %s) OVERLAPS (%s, %s)'
206
+ class Overlaps < Condition
207
+ Operator, Where = '<=>', '(%s, %s) OVERLAPS (%s, %s)'
206
208
  Expected = [Range, lambda {|val|
207
209
  Array === val && 2 == val.length &&
208
210
  [Time, Date, String].any? {|v|v===val[0]} &&
@@ -225,7 +227,7 @@ class SmqlToAR
225
227
  super model, cols, val
226
228
  end
227
229
 
228
- def build builder, table
230
+ def overlaps_build builder, table
229
231
  builder.wobs (v1 = builder.vid).to_sym => @value.begin, (v2 = builder.vid).to_sym => @value.end
230
232
  v1 = "TIMESTAMP #{v1}"
231
233
  v2 = "TIMESTAMP #{v2}"
@@ -236,15 +238,16 @@ class SmqlToAR
236
238
  builder.column( table+f.path, f.col), builder.column( table+s.path, s.col), v1, v2]
237
239
  end
238
240
  end
241
+ alias build overlaps_build
239
242
  end
240
- Overlaps = simple_condition NotOverlaps, '<=>', '(%s, %s) OVERLAPS (%s, %s)'
243
+ NotOverlaps = simple_condition Overlaps, '<=>', 'NOT (%s, %s) OVERLAPS (%s, %s)'
241
244
 
242
245
  class NotIn < Condition
243
246
  Operator = '!|='
244
247
  Where = "%s NOT IN (%s)"
245
248
  Expected = [Array]
246
249
 
247
- def build builder, table
250
+ def not_in_build builder, table
248
251
  builder.wobs (v = builder.vid).to_sym => @value
249
252
  @cols.each do |col|
250
253
  col.joins builder, table
@@ -252,6 +255,7 @@ class SmqlToAR
252
255
  end
253
256
  self
254
257
  end
258
+ alias build not_in_build
255
259
  end
256
260
 
257
261
  In = simple_condition NotIn, '|=', '%s IN (%s)', [Array]
@@ -290,7 +294,7 @@ class SmqlToAR
290
294
  raise_unless col.relation, NonExistingRelationError.new( %w[Relation], col)
291
295
  end
292
296
 
293
- def build builder, table
297
+ def equal_join_build builder, table
294
298
  if 2 < @cols.first.second.length
295
299
  b2, b3 = And, Or
296
300
  else
@@ -300,7 +304,7 @@ class SmqlToAR
300
304
  @cols.each do |col, sub|
301
305
  model, *sub = sub
302
306
  t = table + col.path + [col.col]
303
- col.joins.each {|j, m| builder.joins table+j, m }
307
+ col.joins builder, table
304
308
  builder.joins t, model
305
309
  b4 = b3.new( b2)
306
310
  sub.each do |i|
@@ -310,6 +314,7 @@ class SmqlToAR
310
314
  end
311
315
  self
312
316
  end
317
+ alias build equal_join_build
313
318
  end
314
319
 
315
320
  # Takes to Queries.
@@ -339,7 +344,7 @@ class SmqlToAR
339
344
  raise_unless col.child?, ConColumnError.new( [:Column], col)
340
345
  end
341
346
 
342
- def build builder, table
347
+ def sub_equal_join_build builder, table
343
348
  @cols.each do |col, sub|
344
349
  t = table+col.to_a
345
350
  builder.sub_joins t, col, *sub[0..1]
@@ -348,6 +353,7 @@ class SmqlToAR
348
353
  end
349
354
  self
350
355
  end
356
+ alias build sub_equal_join_build
351
357
  end
352
358
  =end
353
359
 
@@ -372,7 +378,7 @@ class SmqlToAR
372
378
  raise_unless col.exist_in? || SmqlToAR.model_of( col.last_model, col.col), NonExistingSelectableError.new( col)
373
379
  end
374
380
 
375
- def build builder, table
381
+ def select_build builder, table
376
382
  @cols.each do |col|
377
383
  if col.exist_in?
378
384
  col.joins builder, table
@@ -384,6 +390,7 @@ class SmqlToAR
384
390
  end
385
391
  self
386
392
  end
393
+ alias build select_build
387
394
  end
388
395
 
389
396
  class Functions < Condition
@@ -432,7 +439,7 @@ class SmqlToAR
432
439
  super model, func, args
433
440
  end
434
441
 
435
- def build builder, table
442
+ def order_build builder, table
436
443
  return if @args.blank?
437
444
  @args.each do |o|
438
445
  col, o = o
@@ -442,26 +449,29 @@ class SmqlToAR
442
449
  builder.order t, col.col, o
443
450
  end
444
451
  end
452
+ alias build order_build
445
453
  end
446
454
 
447
455
  class Limit < Function
448
456
  Name = :limit
449
457
  Expected = [Fixnum]
450
458
 
451
- def build builder, table
459
+ def limit_build builder, table
452
460
  raise_unless 1 == table.length, RootOnlyFunctionError.new( table)
453
461
  builder.limit = Array.wrap(@args).first.to_i
454
462
  end
463
+ alias build limit_build
455
464
  end
456
465
 
457
466
  class Offset < Function
458
467
  Name = :offset
459
468
  Expected = [Fixnum]
460
469
 
461
- def build builder, table
470
+ def offset_build builder, table
462
471
  raise_unless 1 == table.length, RootOnlyFunctionError.new( table)
463
472
  builder.offset = Array.wrap(@args).first.to_i
464
473
  end
474
+ alias build offset_build
465
475
  end
466
476
 
467
477
  def self.new model, col, val
@@ -135,25 +135,25 @@ class SmqlToAR
135
135
  case refl
136
136
  when ActiveRecord::Reflection::ThroughReflection
137
137
  through = refl.through_reflection
138
- throughtable = table[0...-1]+[Column::Col.new( through.name, table.last.as)]
139
- srctable = throughtable+[Column::Col.new( refl.source_reflection.name, table.last.as)]
138
+ through_table = table[0...-1]+[Column::Col.new( through.name, table.last.as)]
139
+ srctable = through_table+[Column::Col.new( refl.source_reflection.name, table.last.as)]
140
140
  @table_model[ srctable] = model
141
141
  @table_alias[ table] = @table_alias[ srctable]
142
- join_ throughtable, through.klass, quote_table_name( through.table_name)
143
- join_ srctable, refl.klass, query, throughtable
142
+ join_ through_table, through.klass, quote_table_name( through.table_name)
143
+ join_ srctable, refl.klass, query, through_table
144
144
  when ActiveRecord::Reflection::AssociationReflection
145
145
  case refl.macro
146
146
  when :has_many, :has_one
147
- @_joins += build_join query, pretable, t, premodel.primary_key, refl.primary_key_name
147
+ @_joins += build_join query, pretable, t, premodel.primary_key, refl.foreign_key
148
148
  when :belongs_to
149
- @_joins += build_join query, pretable, t, refl.primary_key_name, premodel.primary_key
149
+ @_joins += build_join query, pretable, t, refl.foreign_key, premodel.primary_key
150
150
  when :has_and_belongs_to_many
151
151
  jointable = [Column::Col.new(',')] + table
152
- @_joins += build_join refl.options[:join_table], pretable, @table_alias[jointable], premodel.primary_key, refl.primary_key_name
152
+ @_joins += build_join refl.options[:join_table], pretable, @table_alias[ jointable], premodel.primary_key, refl.foreign_key
153
153
  @_joins += build_join query, jointable, t, refl.association_foreign_key, refl.association_primary_key
154
154
  else raise BuilderError, "Unkown reflection macro: #{refl.macro.inspect}"
155
155
  end
156
- else raise BuilderError, "Unkown reflection type: #{refl.class.name}"
156
+ else raise BuilderError, "Unkown reflection type: #{refl.class.name} #{refl.macro.inspect}"
157
157
  end
158
158
  self
159
159
  end
metadata CHANGED
@@ -6,8 +6,8 @@ version: !ruby/object:Gem::Version
6
6
  - 0
7
7
  - 0
8
8
  - 5
9
- - 1
10
- version: 0.0.5.1
9
+ - 2
10
+ version: 0.0.5.2
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: 2012-01-16 00:00:00 +01:00
18
+ date: 2012-01-17 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency