forest_liana 9.5.5 → 9.5.6

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: 3d1c39075bf7b59d268ffd575ef52feb25eb8a67a370f08b4f94a1bca39288ac
4
- data.tar.gz: 3c7e36125001dd9ed399239848260652ea6736b18cf9c93a3bf7a4eba7b2497c
3
+ metadata.gz: 5326dc27652421070200c8ad7f86863a59b6ee54750b31902e539d7891ad4825
4
+ data.tar.gz: 719a0f521b807b93eb425f51c8397e264b8db3ae2f184a76842f2c5f51865971
5
5
  SHA512:
6
- metadata.gz: f30ea56ebf1e756c17df2398c6746b89165fadda18427b48b3685e5f78276c5994c586f33067c366ddb132245d4a0b0c40e3a562c39a01379319ef8cd7ce84ac
7
- data.tar.gz: 57b9e0b67ca52e8f5703cd989a627f53e2eea910ba923a62f14b22482cee38ee9d0b22ac91aa38fe2f5b29a1a0244ac50cdad93f50cbfe113c73515c5c4d0cc8
6
+ metadata.gz: 5d409eb403db0eba20edd180722ccd14a9eb00019cebc6b9cb04bd62f0da1ecb046ac3a351155372be316d8f08d405c4b8d393a7c1aad506ebf5d6fd2bdea502
7
+ data.tar.gz: 000bd627330daa5a934477ccb93138b94d3d6672011024c195eef9a7d40f144505010f90c3fa1ba9d09818272222b8155e39bf2f11adcee660f2f76c33dd112a
@@ -24,11 +24,15 @@ module ForestLiana::Collection
24
24
  end
25
25
 
26
26
  def action(name, opts = {})
27
+ return if model.actions.find { |action| action.name == name }
28
+
27
29
  opts[:name] = name
28
30
  model.actions << ForestLiana::Model::Action.new(opts)
29
31
  end
30
32
 
31
33
  def segment(name, opts = {}, &block)
34
+ return if model.segments.find { |segment| segment.name == name }
35
+
32
36
  opts[:name] = name
33
37
  model.segments << ForestLiana::Model::Segment.new(opts, &block)
34
38
  end
@@ -74,12 +78,14 @@ module ForestLiana::Collection
74
78
  opts[:validations] = [] unless opts.has_key?(:validations)
75
79
  opts[:is_virtual] = true unless opts.has_key?(:polymorphic_key) && opts[:polymorphic_key]
76
80
 
77
- model.fields << opts.merge({
81
+ field = opts.merge({
78
82
  field: name,
79
83
  is_filterable: !!opts[:is_filterable],
80
84
  is_sortable: !!opts[:is_sortable],
81
85
  })
82
86
 
87
+ add_field(field)
88
+
83
89
  define_method(name) { self.data[name] } if smart_collection?
84
90
 
85
91
  if serializer_name && ForestLiana::UserSpace.const_defined?(
@@ -108,13 +114,15 @@ module ForestLiana::Collection
108
114
  end
109
115
 
110
116
  def has_many(name, opts, &block)
111
- model.fields << opts.merge({
117
+ field = opts.merge({
112
118
  field: name,
113
119
  is_virtual: true,
114
120
  is_searchable: false,
115
121
  type: ['String']
116
122
  })
117
123
 
124
+ add_field(field)
125
+
118
126
  define_method(name) { self.data[name] } if smart_collection?
119
127
 
120
128
  if serializer_name && ForestLiana::UserSpace.const_defined?(
@@ -126,13 +134,15 @@ module ForestLiana::Collection
126
134
  end
127
135
 
128
136
  def belongs_to(name, opts, &block)
129
- model.fields << opts.merge({
137
+ field = opts.merge({
130
138
  field: name,
131
139
  is_virtual: true,
132
140
  is_searchable: false,
133
141
  type: 'String'
134
142
  })
135
143
 
144
+ add_field(field)
145
+
136
146
  define_method(name) { self.data[name] } if smart_collection?
137
147
 
138
148
  if serializer_name && ForestLiana::UserSpace.const_defined?(
@@ -145,6 +155,12 @@ module ForestLiana::Collection
145
155
 
146
156
  private
147
157
 
158
+ def add_field(field)
159
+ return if model.fields.find { |field| field[:field] == name }
160
+
161
+ model.fields << field
162
+ end
163
+
148
164
  def find_name(collection_name)
149
165
  # TODO: Remove once lianas prior to 2.0.0 are not supported anymore.
150
166
  model = ForestLiana.models.find { |collection| collection.try(:table_name) == collection_name.to_s }
@@ -1,3 +1,3 @@
1
1
  module ForestLiana
2
- VERSION = "9.5.5"
2
+ VERSION = "9.5.6"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: forest_liana
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.5.5
4
+ version: 9.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sandro Munda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-09 00:00:00.000000000 Z
11
+ date: 2024-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails