esse 0.1.3 → 0.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: '0785bd8298d822b9778cbbbd98e8ae6b97063d0c18e11da57266e6cb8129c08a'
4
- data.tar.gz: ea927277c5d497bf37127f4c0467253d6163cbc2e011cee9af2095a38162e339
3
+ metadata.gz: a31d2a1c181dccd9c2acd7256d958010e7c636016b1d5a267597f7aec9ed3334
4
+ data.tar.gz: cdb390a10b0492833a9360d4fd39df0c18df114a44b37554cba1dd39d229f75b
5
5
  SHA512:
6
- metadata.gz: 11082f005792f640e9e731ae7b0709370b86c6d151773b8c514f9af87f764b0ba53dee2cf036c6f71168488993403d54b24e921ec75031a91c75f6580de239e8
7
- data.tar.gz: 6f5d2ca3c8b9c2d2125560fcf9d1406210779743b28f0e58708e84dcd31ccad063d31b40f9ae9e5d4f1a6fdc8445e3897226db479fb5dfa96717adab09e2d0a9
6
+ metadata.gz: 59ae5dcafd8998c69e5705910b119f5f9d1333899a4320b8f7afa4c5782aa435d820dde222726de111cee00c6d3b4bbed9d6fdd18dac6a6f740cf64138b70d53
7
+ data.tar.gz: 84b876eaec5b090718e2d265dd5d9456c5dfaeedafdae6e9361ac790de91eab0ba46b9ceabee3c5e8a891c5027ff3ac8443217554219f8dce5f52c853912989c
@@ -19,10 +19,10 @@ module Esse
19
19
  suffix ||= Esse.timestamp
20
20
  suffix = Esse.timestamp while exist?(suffix: suffix).tap { |exist| existing << suffix if exist }
21
21
 
22
- create_index!(suffix: suffix, **options)
23
- import!(suffix: suffix, **options)
22
+ create_index!(**options, suffix: suffix, alias: false)
23
+ import!(**options, suffix: suffix)
24
24
  update_aliases!(suffix: suffix)
25
- existing.each { |_s| delete_index!(suffix: suffix, **options) }
25
+ existing.each { |_s| delete_index!(**options, suffix: suffix) }
26
26
  true
27
27
  end
28
28
  end
@@ -11,7 +11,7 @@ module Esse
11
11
  # @option [Hash] :context The collection context. This value will be passed as argument to the collection
12
12
  # May be SQL condition or any other filter you have defined on the collection.
13
13
  def import(context: {}, suffix: nil, **options)
14
- each_serialized_batch(context || {}) do |batch|
14
+ each_serialized_batch(**(context || {})) do |batch|
15
15
  bulk(index: batch, suffix: suffix, **options)
16
16
  end
17
17
  end
@@ -22,8 +22,8 @@ class <%= @index_name %> < <%= @base_class %>
22
22
  # collection Collections::DocumentCollection
23
23
  #
24
24
  # but you can also use block definition style:
25
- # collection do |_context, &block|
26
- # block.call [{ title: 'foo' }, { title: 'bar' }], context
25
+ # collection do |**context, &block|
26
+ # block.call [{ title: 'foo' }, { title: 'bar' }], extra: 'info'
27
27
  # end
28
28
  #
29
29
  # Serializer block or class yielder should be called with an array of objects.
@@ -78,7 +78,7 @@ class <%= @index_name %> < <%= @base_class %>
78
78
  # Useful for eager loading data from database or any other repository. Below is an example of a rails like
79
79
  # application could load using activerecord.
80
80
  #
81
- # collection do |context, &block|
81
+ # collection do |**context, &block|
82
82
  # <%= type.camelize %>.where(context[:conditions]).find_in_batches(batch_size: 5000) do |batch|
83
83
  # block.call batch, context
84
84
  # end
@@ -86,10 +86,10 @@ module Esse
86
86
  # @param args [*Object] Any argument is allowed here. The collection will be called with same arguments.
87
87
  # And the serializer will be initialized with those arguments too.
88
88
  # @yield [Array, *Object] serialized collection and method arguments
89
- def each_serialized_batch(*args, **kwargs, &block)
90
- each_batch(*args, **kwargs) do |batch|
91
- entries = batch.map { |entry| serialize(entry, *args, **kwargs) }.compact
92
- block.call(entries, *args, **kwargs)
89
+ def each_serialized_batch(**kwargs, &block)
90
+ each_batch(**kwargs) do |*batch, **collection_kwargs|
91
+ entries = batch.flatten.map { |entry| serialize(entry, **collection_kwargs) }.compact
92
+ block.call(entries, **kwargs)
93
93
  end
94
94
  end
95
95
 
@@ -99,9 +99,9 @@ module Esse
99
99
  # GeosIndex.documents(id: 1).first
100
100
  #
101
101
  # @return [Enumerator] All serialized entries
102
- def documents(*args, **kargs)
102
+ def documents(**kwargs)
103
103
  Enumerator.new do |yielder|
104
- each_serialized_batch(*args, **kargs) do |documents, *_inner_args, **_inner_kargs|
104
+ each_serialized_batch(**kwargs) do |documents, **_collection_kargs|
105
105
  documents.each { |document| yielder.yield(document) }
106
106
  end
107
107
  end
data/lib/esse/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Esse
4
- VERSION = '0.1.3'
4
+ VERSION = '0.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: esse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcos G. Zimmermann
8
8
  autorequire:
9
9
  bindir: exec
10
10
  cert_chain: []
11
- date: 2022-03-21 00:00:00.000000000 Z
11
+ date: 2022-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: elasticsearch
@@ -260,7 +260,6 @@ files:
260
260
  - lib/esse/cluster.rb
261
261
  - lib/esse/config.rb
262
262
  - lib/esse/core.rb
263
- - lib/esse/document.rb
264
263
  - lib/esse/errors.rb
265
264
  - lib/esse/events.rb
266
265
  - lib/esse/events/bus.rb
data/lib/esse/document.rb DELETED
@@ -1,43 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Esse
4
- # @abstract
5
- #
6
- # A document is a class that represents a single JSON document to be indexed
7
- class Document
8
- def initialize(entry, **context)
9
- @source = item
10
- @context = context
11
- end
12
-
13
- # Returns the Elasticsearch `_id` for the document.
14
- #
15
- # @return [String, Number] The Elasticsearch `_id` for the document
16
- # @abstract
17
- def id
18
- raise NotImplementedError
19
- end
20
-
21
- # Returns the Elasticsearch `_routing` for the item. Elasticsearch
22
- # default if this value is not provided is to use the `_id`.
23
- # Setting this value to `false` or `nil` will omit sending the
24
- # meta-field with your requests and use default routing behaviour.
25
- #
26
- # @return [String, NilClass, Boolean] The Elasticsearch `_routing` for the document
27
- # @abstract
28
- def routing
29
- end
30
-
31
- def attributes
32
- {}
33
- end
34
-
35
- def to_h
36
- {
37
- _id: id,
38
- }.tap do |hash|
39
- hash[:_routing] = routing if routing
40
- end
41
- end
42
- end
43
- end