querybuilder 0.8.1 → 0.8.2

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/History.txt CHANGED
@@ -1,3 +1,8 @@
1
+ == 0.8.2 2010-08-30
2
+
3
+ * 1 Major enhancement
4
+ * Added the possibility to overwrite defaults for a single query
5
+
1
6
  == 0.8.1 2010-08-30
2
7
 
3
8
  * 1 Major bug fix
@@ -1,3 +1,3 @@
1
1
  module QueryBuilder
2
- VERSION = '0.8.1'
2
+ VERSION = '0.8.2'
3
3
  end
@@ -128,6 +128,7 @@ module QueryBuilder
128
128
  }
129
129
 
130
130
  def initialize(source, opts = {})
131
+ @default = opts.delete(:default) || {}
131
132
  @opts = opts
132
133
  @rubyless_helper = @opts[:rubyless_helper]
133
134
  if source.kind_of?(Processor)
@@ -187,8 +188,8 @@ module QueryBuilder
187
188
  @this = processor
188
189
  end
189
190
 
190
- def default
191
- self.class.defaults
191
+ def default(key)
192
+ @default[key] || self.class.defaults[key]
192
193
  end
193
194
 
194
195
  def process(sxp)
@@ -287,7 +288,7 @@ module QueryBuilder
287
288
  # [letters from friends] or [images in project]
288
289
  def process_query(args)
289
290
  this.process(args)
290
- if @query.order.nil? && order = this.default[:order]
291
+ if @query.order.nil? && order = this.default(:order)
291
292
  sxp = Parser.parse("foo order by #{order}")
292
293
  order = sxp[1]
293
294
  order[1] = [:void] # replace [:relation, "foo"] by [:void]
@@ -732,7 +733,7 @@ module QueryBuilder
732
733
  context[:scope_type] = nil
733
734
  # post scope
734
735
  @query.add_table(use_name, table_name, avoid_alias)
735
- apply_scope(context[:scope] || default[:scope])
736
+ apply_scope(context[:scope] || default(:scope))
736
737
  else
737
738
  # scope already applied / skip
738
739
  @query.add_table(use_name, table_name, avoid_alias)
data/querybuilder.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{querybuilder}
8
- s.version = "0.8.1"
8
+ s.version = "0.8.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Gaspard Bucher"]
@@ -14,7 +14,7 @@ class UserProcessor < QueryBuilder::Processor
14
14
  def process_relation(relation)
15
15
  case relation
16
16
  when 'objects'
17
- this.apply_scope(default[:scope]) if context[:last]
17
+ this.apply_scope(default(:scope)) if context[:last]
18
18
  add_table('objects')
19
19
  @query.add_filter "#{table('objects')}.id = #{field_or_attr('node_id')}"
20
20
  change_processor 'DummyProcessor'
@@ -32,8 +32,14 @@ class DummyQueryBuilder < Test::Unit::TestCase
32
32
  should 'return a query object on query' do
33
33
  assert_kind_of QueryBuilder::Query, subject.new('objects').query
34
34
  end
35
+
36
+ should 'overwrite defaults' do
37
+ assert_equal '%Q{SELECT objects.* FROM objects}', subject.new('objects', :default => {:scope => 'site'}).query.to_s
38
+ assert_equal '[%Q{SELECT objects.* FROM objects WHERE objects.project_id = ?}, project_id]', subject.new('objects', :default => {:scope => 'project'}).query.to_s
39
+ assert_equal '[%Q{SELECT objects.* FROM objects WHERE objects.parent_id = ?}, id]', subject.new('objects').query.to_s
40
+ end
35
41
  end
36
-
42
+
37
43
  context 'Including QueryBuilder' do
38
44
  context 'in a class' do
39
45
  subject do
@@ -41,19 +47,19 @@ class DummyQueryBuilder < Test::Unit::TestCase
41
47
  include QueryBuilder
42
48
  end
43
49
  end
44
-
50
+
45
51
  should 'receive class method query_compiler' do
46
52
  assert_nothing_raised do
47
53
  subject.query_compiler = 'Foo'
48
54
  assert_equal 'Foo', subject.query_compiler
49
55
  end
50
56
  end
51
-
57
+
52
58
  should 'receive class method query_compiler on sub_class' do
53
59
  sub_class = Class.new(subject)
54
60
  subject.query_compiler = 'Foo'
55
61
  assert_equal 'Foo', subject.query_compiler
56
-
62
+
57
63
  sub_class.query_compiler = 'Bar'
58
64
  assert_equal 'Bar', sub_class.query_compiler
59
65
  assert_equal 'Foo', subject.query_compiler
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 8
8
- - 1
9
- version: 0.8.1
8
+ - 2
9
+ version: 0.8.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Gaspard Bucher