dry-elastic_model 0.2.0 → 0.3.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: 8730a0d70a0298649084d06ce66c94013da17d86feaf2983aa7ba16658617a3c
4
- data.tar.gz: ea585bf95b6e9469cd02a83d67ffcb79c605442cca13c7de53208f39d77343da
3
+ metadata.gz: 3f5a0bfc8a861e664e3961981036d4651e3cea94d7ca497902b201d2948c855f
4
+ data.tar.gz: b11c2fb230d30ee0cd3dcfb8cf27f7d31abf6737ab674e299cf60a7394dbc15a
5
5
  SHA512:
6
- metadata.gz: 2ab98478042ae1f7148357cf89db527fcde378a0050d1dcf230781d52ee2d63372f28c1ec0af4d8ca4d6f36a0eaa4306a7502a4946aee3b23eeb84245f3d2224
7
- data.tar.gz: 3abd42cfbcf4553b697e50ad7f472c248e64f7578aede523a7d256bf96bddeefecc19073dbb3b2035dd4dd4ef03a5b49ae5d1846000dde24c6db6945a0255689
6
+ metadata.gz: a25156ba357c9f3e3bcbc8c74a3513ccb9e66b5334b057e170f157ed5125c7d3aa2905a23e539379689044867497eefc477dd4267e9e518e6cc89f5a10c20b8e
7
+ data.tar.gz: ea0b2b507988ab6e7d507142dc850a3a8265a1ea2b460f0ab364f315bce9e7c05970625330476508358fd009cb432047504551b594adf83b6985c23c18c21e85
data/Gemfile.lock CHANGED
@@ -1,19 +1,20 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dry-elastic_model (0.1.4)
4
+ dry-elastic_model (0.3.0)
5
5
  dry-struct (~> 1.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  coderay (1.1.2)
11
- concurrent-ruby (1.1.5)
11
+ concurrent-ruby (1.1.6)
12
12
  diff-lcs (1.3)
13
13
  docile (1.3.1)
14
- dry-configurable (0.9.0)
14
+ dry-configurable (0.11.5)
15
15
  concurrent-ruby (~> 1.0)
16
16
  dry-core (~> 0.4, >= 0.4.7)
17
+ dry-equalizer (~> 0.2)
17
18
  dry-container (0.7.2)
18
19
  concurrent-ruby (~> 1.0)
19
20
  dry-configurable (~> 0.1, >= 0.1.3)
@@ -21,20 +22,20 @@ GEM
21
22
  concurrent-ruby (~> 1.0)
22
23
  dry-equalizer (0.3.0)
23
24
  dry-inflector (0.2.0)
24
- dry-logic (1.0.5)
25
+ dry-logic (1.0.6)
25
26
  concurrent-ruby (~> 1.0)
26
27
  dry-core (~> 0.2)
27
28
  dry-equalizer (~> 0.2)
28
- dry-struct (1.1.1)
29
- dry-core (~> 0.4, >= 0.4.3)
30
- dry-equalizer (~> 0.2)
31
- dry-types (~> 1.0)
29
+ dry-struct (1.3.0)
30
+ dry-core (~> 0.4, >= 0.4.4)
31
+ dry-equalizer (~> 0.3)
32
+ dry-types (~> 1.3)
32
33
  ice_nine (~> 0.11)
33
- dry-types (1.2.1)
34
+ dry-types (1.4.0)
34
35
  concurrent-ruby (~> 1.0)
35
36
  dry-container (~> 0.3)
36
37
  dry-core (~> 0.4, >= 0.4.4)
37
- dry-equalizer (~> 0.2, >= 0.2.2)
38
+ dry-equalizer (~> 0.3)
38
39
  dry-inflector (~> 0.1, >= 0.1.2)
39
40
  dry-logic (~> 1.0, >= 1.0.2)
40
41
  ice_nine (0.11.2)
@@ -77,4 +78,4 @@ DEPENDENCIES
77
78
  simplecov-lcov (~> 0)
78
79
 
79
80
  BUNDLED WITH
80
- 2.0.1
81
+ 2.1.4
data/README.md CHANGED
@@ -37,6 +37,7 @@ Sample model:
37
37
  ```ruby
38
38
  class FooBar < Dry::ElasticModel::Base
39
39
  field :text_field, :text
40
+ field :newly_added_text_field, :text, allow_missing: true
40
41
  field :keyword_field, :keyword, index: false
41
42
  field :date_field, :date
42
43
  field :long_field, :long
@@ -58,6 +59,10 @@ This corresponds to following Elasticsearch mapping (calling `Foo.mapping.to_jso
58
59
  "type": "text",
59
60
  "index": "not_analyzed"
60
61
  },
62
+ "newly_added_text_field": {
63
+ "type": "text",
64
+ "index": "not_analyzed"
65
+ },
61
66
  "keyword_field": {
62
67
  "type": "keyword",
63
68
  "index": false
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.3.0
@@ -4,6 +4,7 @@ module Dry
4
4
  module ElasticModel
5
5
  module Attributes
6
6
  def field(name, type, opts = {})
7
+ allow_missing = opts.delete(:allow_missing)
7
8
  type_definition = Types::TYPES.fetch(type.to_sym)
8
9
 
9
10
  type_options_klass = type_definition.meta[:type_options]
@@ -15,26 +16,54 @@ module Dry
15
16
  end
16
17
 
17
18
  default_opts = type_definition.meta[:opts] || {}
18
- attribute(name,
19
- type_definition.meta(opts: default_opts.merge(options.to_h)))
19
+ define_attribute(
20
+ name,
21
+ type_definition.meta(opts: default_opts.merge(options.to_h)),
22
+ allow_missing: allow_missing
23
+ )
20
24
  end
21
25
 
22
26
  def range(name, type, opts = {})
27
+ allow_missing = allow_missing
23
28
  member = Types::RANGE_TYPES.fetch(type.to_sym)
24
29
 
25
30
  type_definition = Types::Range.call(member)
26
31
 
27
32
  default_opts = type_definition.meta[:opts] || {}
28
- attribute(name, type_definition.meta(opts: default_opts.merge(opts)))
33
+ define_attribute(
34
+ name,
35
+ type_definition.meta(opts: default_opts.merge(opts)),
36
+ allow_missing: opts[:allow_missing]
37
+ )
29
38
  end
30
39
 
31
40
  def list(name, type, opts = {})
41
+ allow_missing = opts.delete(:allow_missing)
32
42
  member = Types::TYPES.fetch(type.to_sym)
33
43
 
34
44
  type_definition = Types::Array.call(member)
35
45
 
36
46
  default_opts = type_definition.meta[:opts] || {}
37
- attribute(name, type_definition.meta(opts: default_opts.merge(opts)))
47
+ define_attribute(
48
+ name,
49
+ type_definition.meta(opts: default_opts.merge(opts)),
50
+ allow_missing: allow_missing
51
+ )
52
+ end
53
+
54
+ private
55
+
56
+ def define_attribute(name, type_definition, allow_missing:)
57
+ public_send(
58
+ attr_definition_method(allow_missing),
59
+ name,
60
+ type_definition
61
+ )
62
+ end
63
+
64
+ def attr_definition_method(allow_missing)
65
+ allow_missing = false if allow_missing.nil?
66
+ allow_missing ? :attribute? : :attribute
38
67
  end
39
68
  end
40
69
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dry-elastic_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konrad Oleksiuk
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-27 00:00:00.000000000 Z
11
+ date: 2020-05-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dry-struct
@@ -168,8 +168,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
168
168
  - !ruby/object:Gem::Version
169
169
  version: '0'
170
170
  requirements: []
171
- rubyforge_project:
172
- rubygems_version: 2.7.3
171
+ rubygems_version: 3.1.2
173
172
  signing_key:
174
173
  specification_version: 4
175
174
  summary: Create Elasticsearch models and mappings from code.