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