cortex-plugins-core 2.0.1 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8b2fbd483fbe77ceb7449d7418525b09fd3a4199
4
- data.tar.gz: d9ed217a4598a60feceadad5e48560c28f83f5b0
3
+ metadata.gz: 94cebb14cba585c69240da175861cf9f988b3ef5
4
+ data.tar.gz: c08ca77752ae8d36768e3f292287b38a067fe53c
5
5
  SHA512:
6
- metadata.gz: c3393e2cef77fc903a3d8f8c7c2b9a97f15f4ae106807c3c0a46ad59cb772151212045f4b93a2a698208f7a362d09860e9fa6449b1e1fdeb33231d0e507351d5
7
- data.tar.gz: f53b7e7a120c9d21b76d641d13e6e03316b7a12a952dcfa093360521a87c150e35fa828b487303e0e4fabb7107ced69ff5c8c8f37d5f63dd106534774addeb88
6
+ metadata.gz: 737c74d7227248643d50daf8465392d863d1ef490e8b1346a56115549dcdfa28b066a350e4cc8afaabbcf4f33832751ac185eb14248955073c53f2b7d2af0c62
7
+ data.tar.gz: d28804c3678c07474bcc2e4a792c73b6e3f5602343e6115df22756e7d686860b4811da38d3e89dbc5f43d9486448124ff3555383d1edcf504509abd0cd513b8c
@@ -9,6 +9,10 @@ class AssetFieldType < FieldType
9
9
  validate :asset_presence, if: :validate_presence?
10
10
  validate :asset_errors
11
11
 
12
+ def elasticsearch_mapping
13
+ { name: mapping_field_name, type: :string, analyzer: :keyword }
14
+ end
15
+
12
16
  def data=(data_hash)
13
17
  assign data_hash['asset'] if data_hash['asset']
14
18
  @asset = attacher.get
@@ -32,10 +36,6 @@ class AssetFieldType < FieldType
32
36
  json
33
37
  end
34
38
 
35
- def mapping
36
- { name: mapping_field_name, type: :string, analyzer: :keyword }
37
- end
38
-
39
39
  private
40
40
 
41
41
  def image?
@@ -4,9 +4,13 @@ class AuthorFieldType < FieldType
4
4
 
5
5
  validates :author_name, presence: true, if: :validate_presence?
6
6
 
7
+ def elasticsearch_mapping
8
+ { name: mapping_field_name, type: :string, analyzer: :keyword }
9
+ end
10
+
7
11
  def data=(data_hash)
8
- data_hash[:author_name] = data_hash[:default_author_name] if data_hash.deep_symbolize_keys[:author_name].blank?
9
- @author_name = data_hash.deep_symbolize_keys[:author_name]
12
+ data_hash[:author_name] = data_hash[:default_author_name] if data_hash['author_name'].blank?
13
+ @author_name = data_hash['author_name']
10
14
  end
11
15
 
12
16
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
@@ -15,10 +19,6 @@ class AuthorFieldType < FieldType
15
19
  json
16
20
  end
17
21
 
18
- def mapping
19
- { name: mapping_field_name, type: :string, analyzer: :snowball }
20
- end
21
-
22
22
  private
23
23
 
24
24
  def mapping_field_name
@@ -1,8 +1,12 @@
1
1
  class BooleanFieldType < FieldType
2
2
  attr_accessor :value
3
3
 
4
+ def elasticsearch_mapping
5
+ { name: mapping_field_name, type: :boolean }
6
+ end
7
+
4
8
  def data=(data_hash)
5
- @value = data_hash.deep_symbolize_keys[:value]
9
+ @value = data_hash['value']
6
10
  end
7
11
 
8
12
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
@@ -11,10 +15,6 @@ class BooleanFieldType < FieldType
11
15
  json
12
16
  end
13
17
 
14
- def mapping
15
- { name: mapping_field_name, type: :string, analyzer: :snowball }
16
- end
17
-
18
18
  private
19
19
 
20
20
  def mapping_field_name
@@ -1,8 +1,12 @@
1
1
  class ContentItemFieldType < FieldType
2
2
  attr_accessor :content_item_id
3
3
 
4
+ def elasticsearch_mapping
5
+ { name: mapping_field_name, type: :keyword, index: :not_analyzed }
6
+ end
7
+
4
8
  def data=(data_hash)
5
- @content_item_id = data_hash.deep_symbolize_keys[:content_item_id]
9
+ @content_item_id = data_hash['content_item_id']
6
10
  end
7
11
 
8
12
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
@@ -11,13 +15,9 @@ class ContentItemFieldType < FieldType
11
15
  json
12
16
  end
13
17
 
14
- def mapping
15
- { name: mapping_field_name, type: :string, analyzer: :snowball }
16
- end
17
-
18
18
  private
19
19
 
20
20
  def mapping_field_name
21
- "#{field_name.parameterize(separator: '_')}_content_item"
21
+ "#{field_name.parameterize(separator: '_')}_content_item_id"
22
22
  end
23
23
  end
@@ -4,6 +4,10 @@ class DateTimeFieldType < FieldType
4
4
  validates :timestamp, presence: true, if: :validate_presence?
5
5
  validate :timestamp_is_valid?, if: :validate_presence?
6
6
 
7
+ def elasticsearch_mapping
8
+ { name: mapping_field_name, type: :string, analyzer: :snowball }
9
+ end
10
+
7
11
  def data=(data_hash)
8
12
  @timestamp = data_hash.deep_symbolize_keys[:timestamp]
9
13
  end
@@ -14,10 +18,6 @@ class DateTimeFieldType < FieldType
14
18
  json
15
19
  end
16
20
 
17
- def mapping
18
- {name: mapping_field_name, type: :string, analyzer: :snowball}
19
- end
20
-
21
21
  private
22
22
 
23
23
  def mapping_field_name
@@ -6,8 +6,12 @@ class FloatFieldType < FieldType
6
6
  validate :less_than, if: Proc.new { |float| validate_key(:max) }
7
7
  validate :greater_than, if: Proc.new { |float| validate_key(:min) }
8
8
 
9
+ def elasticsearch_mapping
10
+ { name: mapping_field_name, type: :float }
11
+ end
12
+
9
13
  def data=(data_hash)
10
- @float = data_hash.deep_symbolize_keys[:float]
14
+ @float = data_hash['float']
11
15
  end
12
16
 
13
17
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
@@ -16,10 +20,6 @@ class FloatFieldType < FieldType
16
20
  json
17
21
  end
18
22
 
19
- def mapping
20
- {name: mapping_field_name, type: :float}
21
- end
22
-
23
23
  private
24
24
 
25
25
  def mapping_field_name
@@ -31,10 +31,10 @@ class FloatFieldType < FieldType
31
31
  end
32
32
 
33
33
  def less_than
34
- errors.add(:float, "must be less_than #{validations[:max]}") if :float <= validations[:max]
34
+ errors.add(:float, "must be less_than #{validations[:max]}") if :float <= validations[:max]
35
35
  end
36
36
 
37
37
  def greater_than
38
- errors.add(:float, "must be greater_than #{validations[:min]}") if :float >= validations[:min]
38
+ errors.add(:float, "must be greater_than #{validations[:min]}") if :float >= validations[:min]
39
39
  end
40
40
  end
@@ -4,10 +4,14 @@ class IntegerFieldType < FieldType
4
4
  validates :integer, presence: true, if: Proc.new { |int| validate_key(:presence) }
5
5
  validates_numericality_of :integer, unless: "integer.nil?"
6
6
  validate :less_than, if: Proc.new { |int| validate_key(:max) }
7
- validate :greater_than, if: Proc.new { |int| validate_key(:min) }
7
+ validate :greater_than, if: Proc.new { |int| validate_key(:min) }
8
+
9
+ def elasticsearch_mapping
10
+ { name: mapping_field_name, type: :integer }
11
+ end
8
12
 
9
13
  def data=(data_hash)
10
- @integer = data_hash.deep_symbolize_keys[:integer]
14
+ @integer = data_hash['integer']
11
15
  end
12
16
 
13
17
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
@@ -16,10 +20,6 @@ class IntegerFieldType < FieldType
16
20
  json
17
21
  end
18
22
 
19
- def mapping
20
- {name: mapping_field_name, type: :integer}
21
- end
22
-
23
23
  private
24
24
 
25
25
  def mapping_field_name
@@ -31,10 +31,10 @@ class IntegerFieldType < FieldType
31
31
  end
32
32
 
33
33
  def less_than
34
- errors.add(:integer, "must be less_than #{validations[:max]}") if :integer <= validations[:max]
34
+ errors.add(:integer, "must be less_than #{validations[:max]}") if :integer <= validations[:max]
35
35
  end
36
36
 
37
37
  def greater_than
38
- errors.add(:integer, "must be greater_than #{validations[:min]}") if :integer >= validations[:min]
38
+ errors.add(:integer, "must be greater_than #{validations[:min]}") if :integer >= validations[:min]
39
39
  end
40
40
  end
@@ -3,28 +3,31 @@ class TagFieldType < FieldType
3
3
 
4
4
  validates :tag_list, presence: true, if: :validate_presence?
5
5
 
6
+ def elasticsearch_mapping
7
+ { name: mapping_field_name, analyzer: :keyword }
8
+ end
9
+
6
10
  def data=(data_hash)
7
- @tag_list = data_hash.deep_symbolize_keys[:tag_list]
8
- @tag_list.nil? ? nil : (@tag_list = @tag_list.split(","))
11
+ @tag_list = tag_list_to_a data_hash['tag_list']
9
12
  end
10
13
 
11
14
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
12
15
  json = {}
13
- json[mapping_field_name] = field_item.data['tag_list']
16
+ json[mapping_field_name] = tag_list_to_a field_item.data['tag_list']
14
17
  json
15
18
  end
16
19
 
17
- def mapping
18
- {name: mapping_field_name, type: :string, analyzer: :snowball}
19
- end
20
-
21
20
  private
22
21
 
23
22
  def mapping_field_name
24
- "#{field_name.parameterize(separator: '_')}_tag"
23
+ "#{field_name.parameterize(separator: '_')}_tags"
25
24
  end
26
25
 
27
26
  def validate_presence?
28
27
  validations.key? :presence
29
28
  end
29
+
30
+ def tag_list_to_a(string)
31
+ string&.split(',')&.map(&:strip)
32
+ end
30
33
  end
@@ -1,4 +1,6 @@
1
1
  class TextFieldType < FieldType
2
+ PRIMARY_DATA_KEY = 'text'.freeze
3
+
2
4
  attr_accessor :text
3
5
  jsonb_accessor :data, text: :string
4
6
 
@@ -6,20 +8,28 @@ class TextFieldType < FieldType
6
8
  validate :text_length, if: :validate_length?
7
9
  validate :text_unique, if: :validate_uniqueness?
8
10
 
11
+ def elasticsearch_mapping
12
+ { name: mapping_field_name, type: :string, analyzer: :snowball }
13
+ end
14
+
15
+ def graphql_value
16
+ text
17
+ end
18
+
19
+ def graphql_type
20
+ types.String
21
+ end
22
+
9
23
  def data=(data_hash)
10
- @text = data_hash.deep_symbolize_keys[:text]
24
+ @text = data_hash[PRIMARY_DATA_KEY]
11
25
  end
12
26
 
13
27
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
14
28
  json = {}
15
- json[mapping_field_name] = field_item.data['text']
29
+ json[mapping_field_name] = field_item.data[PRIMARY_DATA_KEY]
16
30
  json
17
31
  end
18
32
 
19
- def mapping
20
- {name: mapping_field_name, type: :string, analyzer: :snowball}
21
- end
22
-
23
33
  private
24
34
 
25
35
  def mapping_field_name
@@ -5,12 +5,16 @@ class TreeFieldType < FieldType
5
5
  validate :minimum, if: :validate_minimum?
6
6
  validate :maximum, if: :validate_maximum?
7
7
 
8
+ def elasticsearch_mapping
9
+ { name: mapping_field_name, type: :string, analyzer: :snowball }
10
+ end
11
+
8
12
  def data
9
13
  @values
10
14
  end
11
15
 
12
16
  def data=(data_hash)
13
- values = data_hash.deep_symbolize_keys[:values]
17
+ values = data_hash['values']
14
18
 
15
19
  if values.is_a?(Hash)
16
20
  @values = { values: values.keys }
@@ -25,10 +29,6 @@ class TreeFieldType < FieldType
25
29
  json
26
30
  end
27
31
 
28
- def mapping
29
- { name: mapping_field_name, type: :string, analyzer: :snowball }
30
- end
31
-
32
32
  private
33
33
 
34
34
  def mapping_field_name
@@ -4,8 +4,12 @@ class UserFieldType < FieldType
4
4
  validates :user_id, presence: true, if: :validate_presence?
5
5
  validate :valid_user_id?
6
6
 
7
+ def elasticsearch_mapping
8
+ { name: mapping_field_name, type: :keyword, index: :not_analyzed }
9
+ end
10
+
7
11
  def data=(data_hash)
8
- @user_id = data_hash.deep_symbolize_keys[:user_id]
12
+ @user_id = data_hash['user_id']
9
13
  end
10
14
 
11
15
  def field_item_as_indexed_json_for_field_type(field_item, options = {})
@@ -14,14 +18,10 @@ class UserFieldType < FieldType
14
18
  json
15
19
  end
16
20
 
17
- def mapping
18
- {name: mapping_field_name, type: :string, analyzer: :snowball}
19
- end
20
-
21
21
  private
22
22
 
23
23
  def mapping_field_name
24
- "#{field_name.parameterize(separator: '_')}_user"
24
+ "#{field_name.parameterize(separator: '_')}_user_id"
25
25
  end
26
26
 
27
27
  def valid_user_id?
@@ -1,7 +1,7 @@
1
1
  module Cortex
2
2
  module Plugins
3
3
  module Core
4
- VERSION = '2.0.1'
4
+ VERSION = '2.1.0'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cortex-plugins-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - CareerBuilder Employer Site & Content Products
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-11 00:00:00.000000000 Z
11
+ date: 2017-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails