forest_liana 9.5.5 → 9.5.6

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
  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