yql-query 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Readme.md CHANGED
@@ -74,6 +74,7 @@ The full list of methods available:
74
74
  truncate(10)
75
75
  unique('format')
76
76
  sanitize('description')
77
+ remote(10, 30) # remote limits and offsets
77
78
 
78
79
  Refer to the [documentation](http://rdoc.info/gems/yql-query) for complete usage and more examples.
79
80
 
@@ -9,17 +9,19 @@ module YqlQuery
9
9
  # @param
10
10
  def initialize(options={})
11
11
  self.query = Query.new
12
- self.query.table = options.delete(:table)
13
- self.query.limit = options.delete(:limit)
14
- self.query.offset = options.delete(:offset)
15
- self.query.select = options.delete(:select)
16
- self.query.conditions = options.delete(:conditions) || []
17
- self.query.uses = options.delete(:uses) || []
18
- self.query.tail = options.delete(:tail)
19
- self.query.truncate = options.delete(:truncate)
20
- self.query.reverse = options.delete(:reverse)
21
- self.query.unique = options.delete(:unique)
22
- self.query.sanitize = options.delete(:sanitize)
12
+ self.query.table = options.delete(:table)
13
+ self.query.limit = options.delete(:limit)
14
+ self.query.offset = options.delete(:offset)
15
+ self.query.select = options.delete(:select)
16
+ self.query.conditions = options.delete(:conditions) || []
17
+ self.query.uses = options.delete(:uses) || []
18
+ self.query.tail = options.delete(:tail)
19
+ self.query.truncate = options.delete(:truncate)
20
+ self.query.reverse = options.delete(:reverse)
21
+ self.query.unique = options.delete(:unique)
22
+ self.query.sanitize = options.delete(:sanitize)
23
+ self.query.remote_limit = options.delete(:remote_limit)
24
+ self.query.remote_offset = options.delete(:remote_offset)
23
25
  end
24
26
 
25
27
  # Assigns the table for the query being constructed
@@ -57,6 +59,21 @@ module YqlQuery
57
59
  self
58
60
  end
59
61
 
62
+ # Assigns the remote limit for the query being constructed
63
+ #
64
+ # @param [Object] remote_limit The remote limit for the query.
65
+ # @param [optional, Object] remote_offset The remote offset for the query
66
+ # @return [YqlQuery::Builder] YqlQuery::Builder instance reflecting the remote limit assigned.
67
+ #
68
+ # @example The remote limit may be passed as either a string or fixnum:
69
+ # base = Builder.new.remote_limit(5)
70
+ # base = Builder.new.remote_limit('5')
71
+ def remote(remote_limit, remote_offset=0)
72
+ self.query.remote_limit = remote_limit
73
+ self.query.remote_offset = remote_offset
74
+ self
75
+ end
76
+
60
77
  # Assigns the columns to select for the query being constructed
61
78
  #
62
79
  # @param [Object] select The select arguments for the query.
@@ -4,7 +4,7 @@ module YqlQuery
4
4
  class Query
5
5
  attr_accessor :table, :limit, :offset, :select, :uses, :conditions
6
6
  attr_accessor :sort, :tail, :truncate, :reverse, :unique, :sanitize
7
- attr_accessor :sort_descending
7
+ attr_accessor :sort_descending, :remote_limit, :remote_offset
8
8
 
9
9
  def initialize
10
10
  self.conditions = []
@@ -33,6 +33,13 @@ module YqlQuery
33
33
  end
34
34
  stmt << " from "
35
35
  stmt << @table if @table
36
+ if @remote_offset && @remote_limit
37
+ stmt << '('
38
+ if @remote_offset.to_i > 0
39
+ stmt << "#{@remote_offset},"
40
+ end
41
+ stmt << "#{@remote_limit})"
42
+ end
36
43
  stmt
37
44
  end
38
45
 
@@ -1,4 +1,4 @@
1
1
  module YqlQuery
2
2
  # The version of the gem
3
- VERSION = "1.0.1"
3
+ VERSION = "1.1.0"
4
4
  end
@@ -38,6 +38,23 @@ describe YqlQuery::Builder do
38
38
  end
39
39
  end
40
40
 
41
+ describe "#remote()" do
42
+ it "should set the limit" do
43
+ @builder.remote(5)
44
+ @builder.query.remote_limit.should == 5
45
+ end
46
+
47
+ it "should set the limit and offset" do
48
+ @builder.remote(5, 10)
49
+ @builder.query.remote_limit.should == 5
50
+ @builder.query.remote_offset.should == 10
51
+ end
52
+
53
+ it "should return the builder" do
54
+ @builder.remote(5).should be_kind_of(YqlQuery::Builder)
55
+ end
56
+ end
57
+
41
58
  describe "#select()" do
42
59
  it "should set the select" do
43
60
  @builder.select('name')
@@ -276,6 +293,16 @@ describe YqlQuery::Builder do
276
293
  @builder.to_s.should == "select * from music.artists where name = 'John' offset 15"
277
294
  end
278
295
 
296
+ it "should generate the right query when given a remote limit and offset" do
297
+ @builder.conditions("name = 'John'").remote(5)
298
+ @builder.to_s.should == "select * from music.artists(5) where name = 'John'"
299
+ end
300
+
301
+ it "should generate the right query when given a remote limit" do
302
+ @builder.conditions("name = 'John'").remote(5,15)
303
+ @builder.to_s.should == "select * from music.artists(15,5) where name = 'John'"
304
+ end
305
+
279
306
  it "should generate the right query when given a select" do
280
307
  @builder.conditions("name = 'John'").select('Title, First Name, Email')
281
308
  @builder.to_s.should == "select Title, First Name, Email from music.artists where name = 'John'"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: yql-query
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.0.1
5
+ version: 1.1.0
6
6
  platform: ruby
7
7
  authors:
8
8
  - Steve Agalloco
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-22 00:00:00 -05:00
13
+ date: 2011-02-27 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency