slipcover 0.2.65 → 0.2.66
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/slipcover/query.rb +27 -16
- data/lib/slipcover/version.rb +1 -1
- data/spec/query_spec.rb +14 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c30eb78e5ec3f19a657da3119d879a03be089de2
|
4
|
+
data.tar.gz: 48307fb9bd6423823cf6b00cf11a1b105dafff83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e9813aea3e0f1cb40c222a551f0890a5b42b28a927a9da0a69a1f41388f2f26e39e143572fe19027f1b793c28ba04e84985aa80115138054fbb1e92b0ae210a9
|
7
|
+
data.tar.gz: 0ab91d8b3d9e7a38596eb2fd2be4026f7fab8355607a8735e70f9651f545e65b4ab3ba6c9f229b523c1d551c317dd0ba0819b5b7d64a540ef083ac7c7e4fcf5f
|
data/lib/slipcover/query.rb
CHANGED
@@ -7,42 +7,53 @@ module Slipcover
|
|
7
7
|
@view_name = view_name
|
8
8
|
end
|
9
9
|
|
10
|
-
def http_adapter
|
11
|
-
@http_adapter ||= HttpAdapter.new
|
12
|
-
end
|
13
|
-
|
14
|
-
delegate :get,
|
15
|
-
to: :http_adapter
|
16
|
-
|
17
10
|
def url
|
18
11
|
"#{design_document.url}/_view/#{view_name}"
|
19
12
|
end
|
20
13
|
|
21
14
|
def all(opts={})
|
22
|
-
|
15
|
+
opts_params, body_params = url_params_and_body(opts)
|
16
|
+
url_with_qs = add_qs_to_url(url, repackage(opts_params))
|
17
|
+
|
18
|
+
http_adapter.post(url_with_qs, body_params)[:rows].map do |row|
|
23
19
|
doc_data = opts[:include_docs] ? row["doc"] : row
|
24
20
|
Document.new(database.name, doc_data.symbolize_keys)
|
25
|
-
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def database
|
25
|
+
design_document.database
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def url_params_and_body(opts)
|
31
|
+
keys_for_body = [:keys]
|
32
|
+
[opts.except(*keys_for_body), opts.slice(*keys_for_body)]
|
26
33
|
end
|
27
34
|
|
28
35
|
def repackage(opts)
|
29
36
|
opts = opts.dup
|
30
37
|
|
31
38
|
opts.each do |key, value|
|
32
|
-
opts[key] =
|
39
|
+
opts[key] = jsonify_param(value) if jsonify_key?(key)
|
33
40
|
end
|
34
41
|
end
|
35
42
|
|
36
|
-
def
|
37
|
-
|
43
|
+
def jsonify_param(value)
|
44
|
+
value.to_json
|
45
|
+
end
|
46
|
+
|
47
|
+
def jsonify_key?(key)
|
48
|
+
[:key, :startkey, :endkey].include?(key.to_sym)
|
38
49
|
end
|
39
50
|
|
40
|
-
def
|
41
|
-
|
51
|
+
def add_qs_to_url(url, params)
|
52
|
+
url + "?" + params.to_query
|
42
53
|
end
|
43
54
|
|
44
|
-
def
|
45
|
-
|
55
|
+
def http_adapter
|
56
|
+
@http_adapter ||= HttpAdapter.new
|
46
57
|
end
|
47
58
|
end
|
48
59
|
end
|
data/lib/slipcover/version.rb
CHANGED
data/spec/query_spec.rb
CHANGED
@@ -42,6 +42,20 @@ describe Slipcover::Query do
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
it "filters by keys" do
|
46
|
+
results = query.all(keys: ["Deepti", "Fito"], include_docs: true)
|
47
|
+
results.map {|doc| doc[:name] }.should =~ ["Deepti", "Fito"]
|
48
|
+
end
|
49
|
+
|
50
|
+
# this required POSTing to a Couch view because the URL is too long when
|
51
|
+
# there are a lot of keys
|
52
|
+
it "can filter by a lot of keys" do
|
53
|
+
results = query.all(keys: ["Deepti", "Fito",
|
54
|
+
*999.times.map { |i| "Vlad#{i}" }],
|
55
|
+
include_docs: true)
|
56
|
+
results.map {|doc| doc[:name] }.should =~ ["Deepti", "Fito"]
|
57
|
+
end
|
58
|
+
|
45
59
|
context 'with a startkey and endkey' do
|
46
60
|
it "return the range of docs" do
|
47
61
|
results = query.all(startkey: 'Da', endkey: 'Fz', include_docs: true)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slipcover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.66
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kane Baccigalupi
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rest-client
|