groonga-client 0.4.0 → 0.4.1
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/doc/text/news.md +14 -0
- data/lib/groonga/client/request/base.rb +2 -0
- data/lib/groonga/client/request/select.rb +14 -0
- data/lib/groonga/client/response/load.rb +18 -0
- data/lib/groonga/client/version.rb +2 -2
- data/test/request/test-select.rb +137 -2
- data/test/response/test-load.rb +35 -2
- 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: 227bf7a979643ac2f17b20d32b4b3ed0129f8321
|
4
|
+
data.tar.gz: 6e7b2e2451b0d0bf59313a639f2c7c819b4aba7b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 842ff5602d19852b2ebceb64c470efe15eb48a85ef24c539dfd3e7e09458139a9cba3c899cffce26a29cb25cd2c771f815550aaf283c69f62d740161122e0504
|
7
|
+
data.tar.gz: 66bd127398051d6314c7df147688297244dd609c89b7a06eca59351634d4f7c2e06676eb0bb695af55a34553b7a24162e48c28c2eb67a98b77401a75cd741592
|
data/doc/text/news.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# NEWS
|
2
2
|
|
3
|
+
## 0.4.1 - 2016-02-07
|
4
|
+
|
5
|
+
### Improvements
|
6
|
+
|
7
|
+
* `Groonga::Client::Request::Base`: Supported number as parameter
|
8
|
+
value.
|
9
|
+
|
10
|
+
* `Groonga::Client::Response::Load#errors`: Added for `load
|
11
|
+
--output_errors yes --command_version 3`.
|
12
|
+
|
13
|
+
* `Groonga::Client::Request::Select::DynamicColumnWindow#group_keys`:
|
14
|
+
Added for `select --columns[LABEL].window.group_keys`. You can use
|
15
|
+
this method by `request.columns(LABEL).window.group_keys(KEYS)`.
|
16
|
+
|
3
17
|
## 0.4.0 - 2016-01-12
|
4
18
|
|
5
19
|
### Improvements
|
@@ -114,6 +114,9 @@ module Groonga
|
|
114
114
|
def paginate(page, per_page: 10)
|
115
115
|
page ||= 1
|
116
116
|
page = page.to_i
|
117
|
+
per_page = per_page.to_i
|
118
|
+
per_page = 10 if per_page <= 0
|
119
|
+
|
117
120
|
if page <= 0
|
118
121
|
offset = 0
|
119
122
|
else
|
@@ -254,6 +257,17 @@ module Groonga
|
|
254
257
|
alias_method :sortby, :sort_keys
|
255
258
|
alias_method :sort, :sort_keys
|
256
259
|
|
260
|
+
# Sets `columns[LABEL].window.group_keys` parameter.
|
261
|
+
#
|
262
|
+
# @return [Groonga::Client::Request::Select] The current
|
263
|
+
# request object.
|
264
|
+
#
|
265
|
+
# @since 0.4.1
|
266
|
+
def group_keys(value)
|
267
|
+
add_parameter(OverwriteMerger,
|
268
|
+
ValuesParameter.new([:"#{prefix}group_keys"], value))
|
269
|
+
end
|
270
|
+
|
257
271
|
private
|
258
272
|
def prefix
|
259
273
|
"columns[#{@label}].window."
|
@@ -37,6 +37,16 @@ module Groonga
|
|
37
37
|
# @since 0.3.3
|
38
38
|
attr_accessor :loaded_ids
|
39
39
|
|
40
|
+
# @return [::Array<Groonga::Client::Response::Load::Error>]
|
41
|
+
# The errors of loaded records. `error.return_code` isn't
|
42
|
+
# `0` if the corresponding record is failed to load.
|
43
|
+
#
|
44
|
+
# If you don't specify `yes` to `output_errors` `load`
|
45
|
+
# parameter, this is always an empty array.
|
46
|
+
#
|
47
|
+
# @since 0.4.1
|
48
|
+
attr_accessor :errors
|
49
|
+
|
40
50
|
def body=(body)
|
41
51
|
super(body)
|
42
52
|
parse_body(body)
|
@@ -47,11 +57,19 @@ module Groonga
|
|
47
57
|
if body.is_a?(::Hash)
|
48
58
|
@n_loaded_records = body["n_loaded_records"]
|
49
59
|
@loaded_ids = body["loaded_ids"] || []
|
60
|
+
@errors = (body["errors"] || []).collect do |error|
|
61
|
+
Error.new(error["return_code"] || 0,
|
62
|
+
error["message"])
|
63
|
+
end
|
50
64
|
else
|
51
65
|
@n_loaded_records = body
|
52
66
|
@loaded_ids = []
|
67
|
+
@errors = []
|
53
68
|
end
|
54
69
|
end
|
70
|
+
|
71
|
+
class Error < Struct.new(:return_code, :message)
|
72
|
+
end
|
55
73
|
end
|
56
74
|
end
|
57
75
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2013-
|
1
|
+
# Copyright (C) 2013-2017 Kouhei Sutou <kou@clear-code.com>
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -16,6 +16,6 @@
|
|
16
16
|
|
17
17
|
module Groonga
|
18
18
|
class Client
|
19
|
-
VERSION = "0.4.
|
19
|
+
VERSION = "0.4.1"
|
20
20
|
end
|
21
21
|
end
|
data/test/request/test-select.rb
CHANGED
@@ -158,7 +158,7 @@ class TestRequestSelect < Test::Unit::TestCase
|
|
158
158
|
test "Integer" do
|
159
159
|
assert_equal({
|
160
160
|
:table => "posts",
|
161
|
-
:"drilldowns[label].offset" => 29,
|
161
|
+
:"drilldowns[label].offset" => "29",
|
162
162
|
},
|
163
163
|
drilldown.offset(29).to_parameters)
|
164
164
|
end
|
@@ -168,7 +168,7 @@ class TestRequestSelect < Test::Unit::TestCase
|
|
168
168
|
test "Integer" do
|
169
169
|
assert_equal({
|
170
170
|
:table => "posts",
|
171
|
-
:"drilldowns[label].limit" => 29,
|
171
|
+
:"drilldowns[label].limit" => "29",
|
172
172
|
},
|
173
173
|
drilldown.limit(29).to_parameters)
|
174
174
|
end
|
@@ -248,6 +248,141 @@ class TestRequestSelect < Test::Unit::TestCase
|
|
248
248
|
},
|
249
249
|
column.window.sort_keys("_id").to_parameters)
|
250
250
|
end
|
251
|
+
|
252
|
+
test "#group_keys" do
|
253
|
+
assert_equal({
|
254
|
+
:table => "posts",
|
255
|
+
:"columns[label].window.group_keys" => "day, tag",
|
256
|
+
},
|
257
|
+
column.window.group_keys(["day", "tag"]).to_parameters)
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
sub_test_case("#paginate") do
|
263
|
+
def paginate(*args)
|
264
|
+
@request.paginate(*args).to_parameters
|
265
|
+
end
|
266
|
+
|
267
|
+
sub_test_case("page") do
|
268
|
+
test("nil") do
|
269
|
+
assert_equal({
|
270
|
+
:table => "posts",
|
271
|
+
:offset => "0",
|
272
|
+
:limit => "10",
|
273
|
+
},
|
274
|
+
paginate(nil))
|
275
|
+
end
|
276
|
+
|
277
|
+
test("0") do
|
278
|
+
assert_equal({
|
279
|
+
:table => "posts",
|
280
|
+
:offset => "0",
|
281
|
+
:limit => "10",
|
282
|
+
},
|
283
|
+
paginate(0))
|
284
|
+
end
|
285
|
+
|
286
|
+
test("1") do
|
287
|
+
assert_equal({
|
288
|
+
:table => "posts",
|
289
|
+
:offset => "0",
|
290
|
+
:limit => "10",
|
291
|
+
},
|
292
|
+
paginate(1))
|
293
|
+
end
|
294
|
+
|
295
|
+
test("positive") do
|
296
|
+
assert_equal({
|
297
|
+
:table => "posts",
|
298
|
+
:offset => "80",
|
299
|
+
:limit => "10",
|
300
|
+
},
|
301
|
+
paginate(9))
|
302
|
+
end
|
303
|
+
|
304
|
+
test("negative") do
|
305
|
+
assert_equal({
|
306
|
+
:table => "posts",
|
307
|
+
:offset => "0",
|
308
|
+
:limit => "10",
|
309
|
+
},
|
310
|
+
paginate(-1))
|
311
|
+
end
|
312
|
+
|
313
|
+
test("string") do
|
314
|
+
assert_equal({
|
315
|
+
:table => "posts",
|
316
|
+
:offset => "80",
|
317
|
+
:limit => "10",
|
318
|
+
},
|
319
|
+
paginate("9"))
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
sub_test_case("paginate") do
|
324
|
+
test("default") do
|
325
|
+
assert_equal({
|
326
|
+
:table => "posts",
|
327
|
+
:offset => "20",
|
328
|
+
:limit => "10",
|
329
|
+
},
|
330
|
+
paginate(3))
|
331
|
+
end
|
332
|
+
|
333
|
+
test("nil") do
|
334
|
+
assert_equal({
|
335
|
+
:table => "posts",
|
336
|
+
:offset => "20",
|
337
|
+
:limit => "10",
|
338
|
+
},
|
339
|
+
paginate(3, per_page: nil))
|
340
|
+
end
|
341
|
+
|
342
|
+
test("0") do
|
343
|
+
assert_equal({
|
344
|
+
:table => "posts",
|
345
|
+
:offset => "20",
|
346
|
+
:limit => "10",
|
347
|
+
},
|
348
|
+
paginate(3, per_page: 0))
|
349
|
+
end
|
350
|
+
|
351
|
+
test("1") do
|
352
|
+
assert_equal({
|
353
|
+
:table => "posts",
|
354
|
+
:offset => "2",
|
355
|
+
:limit => "1",
|
356
|
+
},
|
357
|
+
paginate(3, per_page: 1))
|
358
|
+
end
|
359
|
+
|
360
|
+
test("positive") do
|
361
|
+
assert_equal({
|
362
|
+
:table => "posts",
|
363
|
+
:offset => "58",
|
364
|
+
:limit => "29",
|
365
|
+
},
|
366
|
+
paginate(3, per_page: 29))
|
367
|
+
end
|
368
|
+
|
369
|
+
test("negative") do
|
370
|
+
assert_equal({
|
371
|
+
:table => "posts",
|
372
|
+
:offset => "20",
|
373
|
+
:limit => "10",
|
374
|
+
},
|
375
|
+
paginate(3, per_page: -1))
|
376
|
+
end
|
377
|
+
|
378
|
+
test("string") do
|
379
|
+
assert_equal({
|
380
|
+
:table => "posts",
|
381
|
+
:offset => "58",
|
382
|
+
:limit => "29",
|
383
|
+
},
|
384
|
+
paginate(3, per_page: "29"))
|
385
|
+
end
|
251
386
|
end
|
252
387
|
end
|
253
388
|
end
|
data/test/response/test-load.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Copyright (C) 2016 Kouhei Sutou <kou@clear-code.com>
|
1
|
+
# Copyright (C) 2016-2017 Kouhei Sutou <kou@clear-code.com>
|
2
2
|
#
|
3
3
|
# This library is free software; you can redistribute it and/or
|
4
4
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -52,7 +52,7 @@ class TestResponseLoad < Test::Unit::TestCase
|
|
52
52
|
end
|
53
53
|
|
54
54
|
sub_test_case("command_version=3") do
|
55
|
-
test("no
|
55
|
+
test("no output_*") do
|
56
56
|
command = Groonga::Command::Load.new("load",
|
57
57
|
{"command_version" => "3"})
|
58
58
|
response = create_response(command, {"n_loaded_records" => 29})
|
@@ -73,6 +73,39 @@ class TestResponseLoad < Test::Unit::TestCase
|
|
73
73
|
})
|
74
74
|
assert_equal(loaded_ids, response.loaded_ids)
|
75
75
|
end
|
76
|
+
|
77
|
+
test("output_errors=yes") do
|
78
|
+
command = Groonga::Command::Load.new("load",
|
79
|
+
{
|
80
|
+
"command_version" => "3",
|
81
|
+
"output_errors" => "yes",
|
82
|
+
})
|
83
|
+
raw_errors = [
|
84
|
+
{
|
85
|
+
"return_code" => 0,
|
86
|
+
"message" => nil,
|
87
|
+
},
|
88
|
+
{
|
89
|
+
"return_code" => -22,
|
90
|
+
"message" => "invalid argument",
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"return_code" => 0,
|
94
|
+
"message" => nil,
|
95
|
+
},
|
96
|
+
]
|
97
|
+
errors = [
|
98
|
+
Groonga::Client::Response::Load::Error.new(0, nil),
|
99
|
+
Groonga::Client::Response::Load::Error.new(-22, "invalid argument"),
|
100
|
+
Groonga::Client::Response::Load::Error.new(0, nil),
|
101
|
+
]
|
102
|
+
response = create_response(command,
|
103
|
+
{
|
104
|
+
"n_loaded_records" => 3,
|
105
|
+
"errors" => raw_errors,
|
106
|
+
})
|
107
|
+
assert_equal(errors, response.errors)
|
108
|
+
end
|
76
109
|
end
|
77
110
|
end
|
78
111
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: groonga-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Haruka Yoshihara
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2017-
|
13
|
+
date: 2017-02-07 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: gqtp
|