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 +1 -0
- data/lib/yql_query/builder.rb +28 -11
- data/lib/yql_query/query.rb +8 -1
- data/lib/yql_query/version.rb +1 -1
- data/spec/yql_query_builder_spec.rb +27 -0
- metadata +2 -2
data/Readme.md
CHANGED
data/lib/yql_query/builder.rb
CHANGED
@@ -9,17 +9,19 @@ module YqlQuery
|
|
9
9
|
# @param
|
10
10
|
def initialize(options={})
|
11
11
|
self.query = Query.new
|
12
|
-
self.query.table
|
13
|
-
self.query.limit
|
14
|
-
self.query.offset
|
15
|
-
self.query.select
|
16
|
-
self.query.conditions
|
17
|
-
self.query.uses
|
18
|
-
self.query.tail
|
19
|
-
self.query.truncate
|
20
|
-
self.query.reverse
|
21
|
-
self.query.unique
|
22
|
-
self.query.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.
|
data/lib/yql_query/query.rb
CHANGED
@@ -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
|
|
data/lib/yql_query/version.rb
CHANGED
@@ -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
|
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-
|
13
|
+
date: 2011-02-27 00:00:00 -05:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|