slipcover 0.2.65 → 0.2.66
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.
- 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
|