yql-query 1.0.1 → 1.1.0

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/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