arelastic 3.1.0 → 3.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b92131dd2729b5be9ad302a31d33db3482ecc47dee0b97681b3cca050cf627ba
4
- data.tar.gz: d2c3fa9dc8ffe7c8f1c268c030964f23281b15dcba1655bc845d6c5ce8a91862
3
+ metadata.gz: '0984b722326d3ec3a60b11114a249eba54399ba4a28a5f05635ec3c6570b16dc'
4
+ data.tar.gz: 7f4451aa328ab073bc7aa66818bcb98b28ac6d2354c8d086213fdad1a441532d
5
5
  SHA512:
6
- metadata.gz: 3e1e3bbdb544e0ee9b39b8c48100339e4340a0adf5985c5a524187ca7758798f596fdf2f7fb3ed221a5334f9f882e037d740267fa29a5cd434c3c13c015fdc3c
7
- data.tar.gz: 7e3578aa3af4ca0efb60fe148a0cd611144d76c9e18b5a78623f43778b3b792e5987a8745dde2e175002e50a4781227bf86500f72716efab76b26387392a4337
6
+ metadata.gz: 01d68d3d7669ab860e232fdb6723b70460ddb103e2c8a4b3d4597a49d090b24da4ef25f3a6a847ee76e459e00b8b6f983499216aa9aa672bef80fe0141913af1
7
+ data.tar.gz: 1a866d2a4b7129a7b59c44ed7c030748937f70bd0539afe9ed45fb6e10ca6a672d1fa4795672b5b9569b34c327764a8a1c798572e49090ebd017a631370430e9
@@ -1,22 +1,8 @@
1
1
  module Arelastic
2
2
  module Aggregations
3
3
  class BucketSelector < Arelastic::Aggregations::Aggregation
4
- attr_accessor :script_params, :script
5
-
6
- def initialize(name, options = {})
7
- options = options.dup
8
- @script_params = read_option! options, 'script_params'
9
- @script = read_option! options, 'script'
10
- super(name, options)
11
- end
12
-
13
4
  def as_elastic_aggregation
14
- {
15
- 'bucket_selector' => {
16
- 'buckets_path' => script_params,
17
- 'script' => script
18
- }
19
- }
5
+ { 'bucket_selector' => options }
20
6
  end
21
7
  end
22
8
  end
@@ -1,37 +1,18 @@
1
1
  module Arelastic
2
2
  module Aggregations
3
3
  class BucketSort < Arelastic::Aggregations::Aggregation
4
- attr_accessor :from, :size, :sort
4
+ attr_accessor :sort
5
5
 
6
6
  def initialize(name, options = {})
7
- options = options.dup
8
- @from = read_option! options, 'from'
9
- @size = read_option! options, 'size'
7
+ super
10
8
  @sort = read_option! options, 'sort'
11
- super(name, options)
12
9
  end
13
10
 
14
11
  def as_elastic_aggregation
15
- bucket_sort = {}
16
- bucket_sort['sort'] = parse_sort if sort
17
- bucket_sort['from'] = from if from
18
- bucket_sort['size'] = size if size
19
- { 'bucket_sort' => bucket_sort }
12
+ params = options
13
+ params = params.merge('sort' => convert_to_elastic(sort)) if sort
14
+ { 'bucket_sort' => params }
20
15
  end
21
-
22
- private
23
-
24
- def parse_sort
25
- if sort.is_a?(Hash)
26
- sort.map { |bucket_path, order| { bucket_path => order } }
27
- elsif sort.is_a?(String)
28
- [sort]
29
- elsif sort.is_a?(Array)
30
- sort
31
- else
32
- raise TypeError.new('Expecting a hash, string, or array as the "sort" argument')
33
- end
34
- end
35
16
  end
36
17
  end
37
18
  end
@@ -1,22 +1,22 @@
1
- require 'helper'
1
+ require "helper"
2
2
 
3
3
  class Arelastic::Aggregations::BucketSelectorTest < Minitest::Test
4
4
  def test_as_elastic
5
- aggregation = Arelastic::Aggregations::BucketSelector.new('foo_agg',
6
- script_params: {
7
- 'foo_bucket' => 'foo_bucket_path',
8
- 'bar_bucket' => 'bar_bucket_path'
5
+ aggregation = Arelastic::Aggregations::BucketSelector.new("foo_agg",
6
+ "buckets_path" => {
7
+ "foo_bucket" => "foo_bucket_path",
8
+ "bar_bucket" => "bar_bucket_path"
9
9
  },
10
- script: "params.foo_bucket > 10 && params.bar_bucket < 100"
10
+ "script" => "params.foo_bucket > 10 && params.bar_bucket < 100"
11
11
  )
12
12
  expected = {
13
- 'foo_agg' => {
14
- 'bucket_selector' => {
15
- 'buckets_path' => {
16
- 'foo_bucket' => 'foo_bucket_path',
17
- 'bar_bucket' => 'bar_bucket_path'
13
+ "foo_agg" => {
14
+ "bucket_selector" => {
15
+ "buckets_path" => {
16
+ "foo_bucket" => "foo_bucket_path",
17
+ "bar_bucket" => "bar_bucket_path"
18
18
  },
19
- 'script' => 'params.foo_bucket > 10 && params.bar_bucket < 100'
19
+ "script" => "params.foo_bucket > 10 && params.bar_bucket < 100"
20
20
  }
21
21
  }
22
22
  }
@@ -1,25 +1,45 @@
1
- require 'helper'
1
+ require "helper"
2
2
 
3
3
  class Arelastic::Aggregations::BucketSortTest < Minitest::Test
4
- def test_parse_sort
5
- assert_equal ['foo'], parse_sort('foo')
6
- assert_equal [{'foo' => 'desc'}, {'bar' => 'asc'}], parse_sort({'foo' => 'desc', 'bar' => 'asc'})
4
+ def test_as_elastic
5
+ aggregation = Arelastic::Aggregations::BucketSort.new("foo_agg", "size" => 3, "from" => 5, "sort" => "price")
6
+
7
+ expected = {
8
+ "foo_agg" => {
9
+ "bucket_sort" => {
10
+ "sort" => "price",
11
+ "from" => 5,
12
+ "size" => 3
13
+ }
14
+ }
15
+ }
16
+ assert_equal expected, aggregation.as_elastic
7
17
  end
8
18
 
9
- def test_size_and_from
10
- aggregation = Arelastic::Aggregations::BucketSort.new('foo_agg', 'size' => 3, 'from' => 5)
19
+ def test_arelastic_sort
20
+ sort = Arelastic::Sorts::Field.new("price" => "desc")
21
+ aggregation = Arelastic::Aggregations::BucketSort.new("foo_agg", "sort" => sort)
22
+
11
23
  expected = {
12
- 'foo_agg' => {
13
- 'bucket_sort' => {
14
- 'from' => 5,
15
- 'size' => 3
24
+ "foo_agg" => {
25
+ "bucket_sort" => {
26
+ "sort" => {"price" => "desc"}
16
27
  }
17
28
  }
18
29
  }
19
30
  assert_equal expected, aggregation.as_elastic
20
31
  end
21
32
 
22
- def parse_sort(sort)
23
- Arelastic::Aggregations::BucketSort.new('foosort', sort: sort).as_elastic['foosort']['bucket_sort']['sort']
33
+ def test_optional_sort
34
+ aggregation = Arelastic::Aggregations::BucketSort.new("foo_agg", "size" => 3)
35
+
36
+ expected = {
37
+ "foo_agg" => {
38
+ "bucket_sort" => {
39
+ "size" => 3
40
+ }
41
+ }
42
+ }
43
+ assert_equal expected, aggregation.as_elastic
24
44
  end
25
45
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arelastic
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Higgins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-24 00:00:00.000000000 Z
11
+ date: 2021-05-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Build Elastic Search queries with objects
14
14
  email: developer@matthewhiggins.com