active_shotgun 0.0.2 → 0.0.2.1

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: e2c263bcd899abc5f20b86c31586b9c973ff9620dd742f923c15f74285083585
4
- data.tar.gz: 5ed4741b318d9d9ea168341bd52b5995a2a209762a4155323bcb516d4c326246
3
+ metadata.gz: 3abb67e7c3b8be946a8f22ed9e4c7829446b3aea28fc40e7c8bafdd1a79d063c
4
+ data.tar.gz: cf80eac1abcc79a182a88e8bb5850d02554cb51f7fdce66c1231c9d10b010722
5
5
  SHA512:
6
- metadata.gz: 1e7a8d64f3b69ab20da321cca18ccb5c4016144a5cd8c60cc2b88b8ac8a4febc7620bc69a2d80c5a8eb47a88bf2c8c8babb63d5883587c38b76751f22ef4ffe7
7
- data.tar.gz: dbe156034f91918614f051ed81a5e222fadde079f7c1c73e89a3761929ca07029d74bd395c6c94b73fe4d9ddf2cc23cfd79d1f2c6eeb86cfe61ff0b772c6c8eb
6
+ metadata.gz: 316e77ebbe27f4c708f8bb1849b4cb79426b79aa319cc9952e42617dedef13841fb0204612c8abed1a5a87e47052441176313945c03199fcf32d0d4beb3c7f83
7
+ data.tar.gz: b56bbd475751025fa8841281550ab33078bad9a88bfdc58af13157f516bb415c6db545f2286eae049694e403c1ebe0d5f575fff295bc69593d03af752a4cf7a6
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.0.2.1] - 2020-12-16
10
+ ### Changed
11
+ - Not everything is in one big file now
12
+
9
13
  ## [0.0.2] - 2020-12-16
10
14
  ### Added
11
15
  - save, create, update, find, delete, revive (and friends)
@@ -20,6 +24,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
20
24
  ### Added
21
25
  - Gem init
22
26
 
23
- [Unreleased]: https://github.com/zaratan/active_shotgun/compare/v0.0.2...HEAD
27
+ [Unreleased]: https://github.com/zaratan/active_shotgun/compare/v0.0.2.1...HEAD
28
+ [0.0.2.1]: https://github.com/zaratan/active_shotgun/releases/tag/v0.0.2.1
24
29
  [0.0.2]: https://github.com/zaratan/active_shotgun/releases/tag/v0.0.2
25
30
  [0.0.1]: https://github.com/zaratan/active_shotgun/releases/tag/v0.0.1
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active_shotgun (0.0.2)
4
+ active_shotgun (0.0.2.1)
5
5
  activemodel (>= 5.2)
6
6
  shotgun_api_ruby (>= 0.0.8.2)
7
7
  zeitwerk (~> 2)
@@ -59,156 +59,5 @@ module ActiveShotgun
59
59
  base_class.prepend(Validations)
60
60
  base_class.prepend(Callbacks)
61
61
  end
62
-
63
- module Write
64
- def persisted?
65
- !!id
66
- end
67
-
68
- def save
69
- return false unless changed?
70
-
71
- sg_result =
72
- if persisted?
73
- shotgun_client.update(id, changes.transform_values(&:last))
74
- else
75
- shotgun_client.create(changes.transform_values(&:last))
76
- end
77
- override_attributes!(sg_result.attributes.to_h.merge(id: sg_result.id))
78
- changes_applied
79
- true
80
- end
81
- alias_method :save!, :save
82
-
83
- def mass_assign(assigned_attributes)
84
- assigned_attributes.
85
- transform_keys(&:to_sym).
86
- slice(*self.class.shotgun_writable_fetched_attributes).
87
- each do |k, v|
88
- public_send("#{k}=", v)
89
- end
90
- end
91
-
92
- def update(updated_attributes)
93
- mass_assign(updated_attributes)
94
- save
95
- end
96
-
97
- def update!(updated_attributes)
98
- mass_assign(updated_attributes)
99
- save!
100
- end
101
-
102
- module ClassMethods
103
- def create(create_attributes)
104
- new_entity = new
105
- new_entity.mass_assign(create_attributes)
106
- new_entity.save
107
- end
108
-
109
- def create!(create_attributes)
110
- new_entity = new
111
- new_entity.mass_assign(create_attributes)
112
- new_entity.save!
113
- end
114
- end
115
-
116
- private
117
-
118
- def override_attributes!(new_attributes)
119
- new_attributes.
120
- transform_keys(&:to_sym).
121
- slice(*self.class.shotgun_readable_fetched_attributes).
122
- each do |k, v|
123
- instance_variable_set("@#{k}", v)
124
- end
125
- end
126
- end
127
-
128
- module Validations
129
- def save
130
- validate && super
131
- end
132
-
133
- def save!
134
- validate!
135
- super
136
- end
137
- end
138
-
139
- module Callbacks
140
- def self.prepended(base)
141
- base.define_model_callbacks :destroy
142
- base.define_model_callbacks :update
143
- base.define_model_callbacks :save
144
- base.define_model_callbacks :create
145
- base.define_model_callbacks :validation
146
- end
147
-
148
- def destroy
149
- run_callbacks(:destroy) do
150
- super
151
- end
152
- end
153
-
154
- def save
155
- run_callbacks(:save) do
156
- run_callbacks(persisted? ? :update : :create) do
157
- super
158
- end
159
- end
160
- end
161
-
162
- def validate
163
- run_callbacks(:validation) do
164
- super
165
- end
166
- end
167
- end
168
-
169
- module Delete
170
- def delete
171
- shotgun_client.delete(id)
172
- end
173
- alias_method :destroy, :delete
174
-
175
- module ClassMethods
176
- def revive(id)
177
- shotgun_client.revive(id)
178
- end
179
- end
180
- end
181
-
182
- module Read
183
- def attributes
184
- self.class.shotgun_readable_fetched_attributes.map do |attribute|
185
- [attribute, instance_variable_get("@#{attribute}")]
186
- end.to_h
187
- end
188
-
189
- def writable_attributes
190
- self.class.shotgun_writable_fetched_attributes.map do |attribute|
191
- [attribute, instance_variable_get("@#{attribute}")]
192
- end.to_h
193
- end
194
-
195
- def initialize(new_attributes = {})
196
- new_attributes.slice(*self.class.shotgun_readable_fetched_attributes).each do |attribute, value|
197
- instance_variable_set("@#{attribute}", value)
198
- end
199
- end
200
-
201
- module ClassMethods
202
- def first
203
- sg_result = shotgun_client.first
204
- new(sg_result.attributes.to_h.merge(id: sg_result.id))
205
- end
206
-
207
- def find(id)
208
- sg_result = shotgun_client.find(id)
209
- new(sg_result.attributes.to_h.merge(id: sg_result.id))
210
- end
211
- end
212
- end
213
62
  end
214
63
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveShotgun
4
+ module Model
5
+ module Callbacks
6
+ def self.prepended(base)
7
+ base.define_model_callbacks :destroy
8
+ base.define_model_callbacks :update
9
+ base.define_model_callbacks :save
10
+ base.define_model_callbacks :create
11
+ base.define_model_callbacks :validation
12
+ end
13
+
14
+ def destroy
15
+ run_callbacks(:destroy) do
16
+ super
17
+ end
18
+ end
19
+
20
+ def save
21
+ run_callbacks(:save) do
22
+ run_callbacks(persisted? ? :update : :create) do
23
+ super
24
+ end
25
+ end
26
+ end
27
+
28
+ def validate
29
+ run_callbacks(:validation) do
30
+ super
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveShotgun
4
+ module Model
5
+ module Delete
6
+ def delete
7
+ shotgun_client.delete(id)
8
+ end
9
+ alias_method :destroy, :delete
10
+
11
+ module ClassMethods
12
+ def revive(id)
13
+ shotgun_client.revive(id)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveShotgun
4
+ module Model
5
+ module Read
6
+ def attributes
7
+ self.class.shotgun_readable_fetched_attributes.map do |attribute|
8
+ [attribute, instance_variable_get("@#{attribute}")]
9
+ end.to_h
10
+ end
11
+
12
+ def writable_attributes
13
+ self.class.shotgun_writable_fetched_attributes.map do |attribute|
14
+ [attribute, instance_variable_get("@#{attribute}")]
15
+ end.to_h
16
+ end
17
+
18
+ def initialize(new_attributes = {})
19
+ new_attributes.slice(*self.class.shotgun_readable_fetched_attributes).each do |attribute, value|
20
+ instance_variable_set("@#{attribute}", value)
21
+ end
22
+ end
23
+
24
+ module ClassMethods
25
+ def first
26
+ sg_result = shotgun_client.first
27
+ new(sg_result.attributes.to_h.merge(id: sg_result.id))
28
+ end
29
+
30
+ def find(id)
31
+ sg_result = shotgun_client.find(id)
32
+ new(sg_result.attributes.to_h.merge(id: sg_result.id))
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveShotgun
4
+ module Model
5
+ module Validations
6
+ def save
7
+ validate && super
8
+ end
9
+
10
+ def save!
11
+ validate!
12
+ super
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ActiveShotgun
4
+ module Model
5
+ module Write
6
+ def persisted?
7
+ !!id
8
+ end
9
+
10
+ def save
11
+ return false unless changed?
12
+
13
+ sg_result =
14
+ if persisted?
15
+ shotgun_client.update(id, changes.transform_values(&:last))
16
+ else
17
+ shotgun_client.create(changes.transform_values(&:last))
18
+ end
19
+ override_attributes!(sg_result.attributes.to_h.merge(id: sg_result.id))
20
+ changes_applied
21
+ true
22
+ end
23
+ alias_method :save!, :save
24
+
25
+ def mass_assign(assigned_attributes)
26
+ assigned_attributes.
27
+ transform_keys(&:to_sym).
28
+ slice(*self.class.shotgun_writable_fetched_attributes).
29
+ each do |k, v|
30
+ public_send("#{k}=", v)
31
+ end
32
+ end
33
+
34
+ def update(updated_attributes)
35
+ mass_assign(updated_attributes)
36
+ save
37
+ end
38
+
39
+ def update!(updated_attributes)
40
+ mass_assign(updated_attributes)
41
+ save!
42
+ end
43
+
44
+ module ClassMethods
45
+ def create(create_attributes)
46
+ new_entity = new
47
+ new_entity.mass_assign(create_attributes)
48
+ new_entity.save
49
+ end
50
+
51
+ def create!(create_attributes)
52
+ new_entity = new
53
+ new_entity.mass_assign(create_attributes)
54
+ new_entity.save!
55
+ end
56
+ end
57
+
58
+ private
59
+
60
+ def override_attributes!(new_attributes)
61
+ new_attributes.
62
+ transform_keys(&:to_sym).
63
+ slice(*self.class.shotgun_readable_fetched_attributes).
64
+ each do |k, v|
65
+ instance_variable_set("@#{k}", v)
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveShotgun
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.2.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_shotgun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Denis <Zaratan> Pasin
@@ -266,6 +266,11 @@ files:
266
266
  - lib/active_shotgun/client.rb
267
267
  - lib/active_shotgun/config.rb
268
268
  - lib/active_shotgun/model.rb
269
+ - lib/active_shotgun/model/callbacks.rb
270
+ - lib/active_shotgun/model/delete.rb
271
+ - lib/active_shotgun/model/read.rb
272
+ - lib/active_shotgun/model/validations.rb
273
+ - lib/active_shotgun/model/write.rb
269
274
  - lib/active_shotgun/version.rb
270
275
  homepage: https://github.com/zaratan/active_shotgun
271
276
  licenses: