loggable_activity 0.1.56 → 0.1.59

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -1
  3. data/CHANGELOG.md +9 -0
  4. data/GETTING-STARTED.md +8 -47
  5. data/PAYLOAD_EXAMPLE.md +63 -0
  6. data/docs/LoggableActivity/Activity.html +92 -241
  7. data/docs/LoggableActivity/Configuration.html +162 -15
  8. data/docs/LoggableActivity/ConfigurationError.html +148 -0
  9. data/docs/LoggableActivity/DataOwner.html +138 -0
  10. data/docs/LoggableActivity/Encryption.html +18 -14
  11. data/docs/LoggableActivity/EncryptionError.html +47 -1
  12. data/docs/LoggableActivity/EncryptionKey.html +54 -35
  13. data/docs/LoggableActivity/Error.html +48 -0
  14. data/docs/LoggableActivity/Hooks.html +221 -89
  15. data/docs/LoggableActivity/Payload.html +103 -27
  16. data/docs/LoggableActivity/Services/BasePayloadsBuilder.html +442 -0
  17. data/docs/LoggableActivity/Services/DestroyPayloadsBuilder.html +395 -0
  18. data/docs/LoggableActivity/Services/PayloadsBuilder.html +342 -0
  19. data/docs/LoggableActivity/Services/UpdatePayloadsBuilder.html +490 -0
  20. data/docs/LoggableActivity/Services.html +93 -0
  21. data/docs/created.rid +14 -10
  22. data/docs/index.html +10 -2
  23. data/docs/js/navigation.js.gz +0 -0
  24. data/docs/js/search_index.js +1 -1
  25. data/docs/js/search_index.js.gz +0 -0
  26. data/docs/js/searcher.js.gz +0 -0
  27. data/docs/table_of_contents.html +253 -85
  28. data/lib/generators/loggable_activity/install_generator.rb +2 -18
  29. data/lib/generators/loggable_activity/templates/.DS_Store +0 -0
  30. data/lib/generators/loggable_activity/templates/binary_ids/create_loggable_activities.rb +9 -10
  31. data/lib/generators/loggable_activity/templates/create_loggable_activities.rb +16 -13
  32. data/lib/loggable_activity/activity.rb +53 -102
  33. data/lib/loggable_activity/configuration.rb +60 -3
  34. data/lib/loggable_activity/data_owner.rb +18 -0
  35. data/lib/loggable_activity/encryption.rb +14 -14
  36. data/lib/loggable_activity/encryption_key.rb +26 -25
  37. data/lib/loggable_activity/error.rb +34 -0
  38. data/lib/loggable_activity/hooks.rb +78 -43
  39. data/lib/loggable_activity/payload.rb +70 -20
  40. data/lib/loggable_activity/services/base_payloads_builder.rb +127 -0
  41. data/lib/loggable_activity/services/destroy_payloads_builder.rb +127 -0
  42. data/lib/loggable_activity/services/payloads_builder.rb +98 -0
  43. data/lib/loggable_activity/services/update_payloads_builder.rb +170 -0
  44. data/lib/loggable_activity/version.rb +1 -1
  45. data/lib/loggable_activity.rb +6 -6
  46. data/lib/schemas/config_schema.json +90 -0
  47. metadata +37 -26
  48. data/docs/LoggableActivity/PayloadsBuilder.html +0 -441
  49. data/docs/LoggableActivity/UpdatePayloadsBuilder.html +0 -424
  50. data/lib/generators/loggable_activity/install_templates_generator.rb +0 -105
  51. data/lib/generators/loggable_activity/templates/helpers/activity_helper.rb +0 -37
  52. data/lib/generators/loggable_activity/templates/helpers/router.rb +0 -52
  53. data/lib/generators/loggable_activity/templates/helpers/routes_helper.rb +0 -20
  54. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_create.html.erb +0 -23
  55. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_create.html.slim +0 -18
  56. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_destroy.html.erb +0 -18
  57. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_destroy.html.slim +0 -17
  58. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_show.html.erb +0 -18
  59. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_show.html.slim +0 -17
  60. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_update.html.erb +0 -18
  61. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/default/_update.html.slim +0 -12
  62. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_activity_info.html.erb +0 -12
  63. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_activity_info.html.slim +0 -11
  64. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_list_attrs.html.erb +0 -8
  65. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_list_attrs.html.slim +0 -6
  66. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_update_attrs.html.erb +0 -17
  67. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_update_attrs.html.slim +0 -14
  68. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_updated_relations.html.erb +0 -23
  69. data/lib/generators/loggable_activity/templates/views/loggable_activity/templates/shared/_updated_relations.html.slim +0 -21
  70. data/lib/loggable_activity/payloads_builder.rb +0 -153
  71. data/lib/loggable_activity/update_payloads_builder.rb +0 -127
@@ -75,21 +75,17 @@
75
75
  <li ><a href="#method-c-activities_for_actor">::activities_for_actor</a>
76
76
  <li ><a href="#method-c-last">::last</a>
77
77
  <li ><a href="#method-c-latest">::latest</a>
78
+ <li ><a href="#method-i-actor_deleted-3F">#actor_deleted?</a>
78
79
  <li ><a href="#method-i-actor_display_name">#actor_display_name</a>
79
- <li ><a href="#method-i-actor_key">#actor_key</a>
80
+ <li ><a href="#method-i-actor_secret_key">#actor_secret_key</a>
80
81
  <li ><a href="#method-i-attrs">#attrs</a>
81
82
  <li ><a href="#method-i-must_have_at_least_one_payload">#must_have_at_least_one_payload</a>
82
83
  <li ><a href="#method-i-ordered_payloads">#ordered_payloads</a>
83
- <li ><a href="#method-i-path">#path</a>
84
- <li ><a href="#method-i-previous_associations_attrs">#previous_associations_attrs</a>
84
+ <li ><a href="#method-i-payloads_attrs">#payloads_attrs</a>
85
85
  <li ><a href="#method-i-primary_payload">#primary_payload</a>
86
- <li ><a href="#method-i-primary_payload_attrs">#primary_payload_attrs</a>
86
+ <li ><a href="#method-i-primary_route">#primary_route</a>
87
87
  <li ><a href="#method-i-record_display_name">#record_display_name</a>
88
88
  <li ><a href="#method-i-record_key">#record_key</a>
89
- <li ><a href="#method-i-relations_attrs">#relations_attrs</a>
90
- <li ><a href="#method-i-update_activity_attrs">#update_activity_attrs</a>
91
- <li ><a href="#method-i-update_attrs">#update_attrs</a>
92
- <li ><a href="#method-i-updated_relations_attrs">#updated_relations_attrs</a>
93
89
  </ul>
94
90
  </div>
95
91
 
@@ -131,9 +127,9 @@
131
127
  <p>Returns a list of activities for a given actor.</p>
132
128
 
133
129
  <div class="method-source-code" id="activities_for_actor-source">
134
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 155</span>
130
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 124</span>
135
131
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">activities_for_actor</span>(<span class="ruby-identifier">actor</span>, <span class="ruby-identifier">limit</span> = <span class="ruby-value">20</span>, <span class="ruby-identifier">params</span> = { <span class="ruby-value">offset:</span> <span class="ruby-value">0</span> })
136
- <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Activity</span>.<span class="ruby-identifier">latest</span>(<span class="ruby-identifier">limit</span>, <span class="ruby-identifier">params</span>).<span class="ruby-identifier">where</span>(<span class="ruby-value">actor:</span>)
132
+ <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Activity</span>.<span class="ruby-identifier">latest</span>(<span class="ruby-identifier">limit</span>, <span class="ruby-identifier">params</span>).<span class="ruby-identifier">where</span>(<span class="ruby-value">actor:</span>)
137
133
  <span class="ruby-keyword">end</span></pre>
138
134
  </div>
139
135
  </div>
@@ -151,10 +147,10 @@
151
147
  </div>
152
148
 
153
149
  <div class="method-description">
154
- <p>Returns the last activity.</p>
150
+ <p>Returns the last activity. This is done to support of UUID primary keys.</p>
155
151
 
156
152
  <div class="method-source-code" id="last-source">
157
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 171</span>
153
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 142</span>
158
154
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">last</span>(<span class="ruby-identifier">limit</span> = <span class="ruby-value">1</span>)
159
155
  <span class="ruby-keyword">return</span> <span class="ruby-identifier">latest</span>(<span class="ruby-value">1</span>).<span class="ruby-identifier">first</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">limit</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
160
156
 
@@ -176,16 +172,16 @@
176
172
  </div>
177
173
 
178
174
  <div class="method-description">
179
- <p>Returns a list of activities ordered by creation date.</p>
175
+ <p>Returns a list of activities ordered by creation date. This is done to support UUID primary keys.</p>
180
176
 
181
177
  <div class="method-source-code" id="latest-source">
182
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 160</span>
178
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 130</span>
183
179
  <span class="ruby-keyword">def</span> <span class="ruby-keyword">self</span>.<span class="ruby-identifier ruby-title">latest</span>(<span class="ruby-identifier">limit</span> = <span class="ruby-value">20</span>, <span class="ruby-identifier">params</span> = { <span class="ruby-value">offset:</span> <span class="ruby-value">0</span> })
184
180
  <span class="ruby-identifier">offset</span> = <span class="ruby-identifier">params</span>[<span class="ruby-value">:offset</span>] <span class="ruby-operator">||</span> <span class="ruby-value">0</span>
185
- <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Activity</span>
181
+ <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Activity</span>
186
182
  .<span class="ruby-identifier">all</span>
187
183
  .<span class="ruby-identifier">order</span>(<span class="ruby-value">created_at:</span> <span class="ruby-value">:desc</span>)
188
- .<span class="ruby-identifier">includes</span>(<span class="ruby-value">:payloads</span>)
184
+ .<span class="ruby-identifier">includes</span>(<span class="ruby-value">payloads:</span> <span class="ruby-value">:encryption_key</span>)
189
185
  .<span class="ruby-identifier">offset</span>(<span class="ruby-identifier">offset</span>)
190
186
  .<span class="ruby-identifier">limit</span>(<span class="ruby-identifier">limit</span>)
191
187
  <span class="ruby-keyword">end</span></pre>
@@ -225,11 +221,11 @@
225
221
  </pre>
226
222
 
227
223
  <div class="method-source-code" id="actor_display_name-source">
228
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 148</span>
224
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 117</span>
229
225
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_display_name</span>
230
- <span class="ruby-keyword">return</span> <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;loggable.activity.deleted&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">encrypted_actor_display_name</span>.<span class="ruby-identifier">nil?</span>
226
+ <span class="ruby-keyword">return</span> <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;loggable.activity.deleted&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">actor_deleted?</span>
231
227
 
232
- <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Encryption</span>.<span class="ruby-identifier">decrypt</span>(<span class="ruby-identifier">encrypted_actor_display_name</span>, <span class="ruby-identifier">actor_key</span>)
228
+ <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Encryption</span>.<span class="ruby-identifier">decrypt</span>(<span class="ruby-identifier">encrypted_actor_name</span>, <span class="ruby-identifier">actor_secret_key</span>)
233
229
  <span class="ruby-keyword">end</span></pre>
234
230
  </div>
235
231
  </div>
@@ -253,7 +249,7 @@
253
249
  <ul><li>
254
250
  <p>:record_type: The class name of the record.</p>
255
251
  </li><li>
256
- <p>:payload_type: A descriptor of the payload’s role (e.g., ‘primary_payload’ or ‘current_association’).</p>
252
+ <p>:related_to_activity_as: A descriptor of the payload’s role (e.g., ‘primary_payload’ or ‘current_association’).</p>
257
253
  </li><li>
258
254
  <p>:attrs: A hash of the record’s attributes.</p>
259
255
  </li></ul>
@@ -266,23 +262,22 @@
266
262
  <p>Sample return value:</p>
267
263
 
268
264
  <pre>[
269
- { record_type: MODEL_NAME, payload_type: &quot;primary_payload&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
270
- { record_type: MODEL_NAME, payload_type: &quot;current_association&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
265
+ { record_type: MODEL_NAME, related_to_activity_as: &quot;primary_payload&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
266
+ { record_type: MODEL_NAME, related_to_activity_as: &quot;current_association&quot;, attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
271
267
  ...
272
268
  ]</pre>
273
269
 
274
270
  <div class="method-source-code" id="attrs-source">
275
271
  <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 37</span>
276
272
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">attrs</span>
277
- <span class="ruby-identifier">ordered_payloads</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">payload</span><span class="ruby-operator">|</span>
278
- {
279
- <span class="ruby-value">record_type:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_type</span>,
280
- <span class="ruby-value">record_id:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_id</span>,
281
- <span class="ruby-value">payload_type:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">payload_type</span>,
282
- <span class="ruby-value">attrs:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">attrs</span>,
283
- <span class="ruby-value">path:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">payload_route</span>
284
- }
285
- <span class="ruby-keyword">end</span>
273
+ {
274
+ <span class="ruby-value">actor_type:</span>,
275
+ <span class="ruby-value">actor_id:</span>,
276
+ <span class="ruby-value">action:</span>,
277
+ <span class="ruby-value">actor_display_name:</span>,
278
+ <span class="ruby-value">record_display_name:</span>,
279
+ <span class="ruby-value">payloads:</span> <span class="ruby-identifier">payloads_attrs</span>
280
+ }
286
281
  <span class="ruby-keyword">end</span></pre>
287
282
  </div>
288
283
  </div>
@@ -290,32 +285,33 @@
290
285
 
291
286
  </div>
292
287
 
293
- <div id="method-i-path" class="method-detail ">
288
+ <div id="method-i-payloads_attrs" class="method-detail ">
294
289
  <div class="method-header">
295
290
  <div class="method-heading">
296
- <span class="method-name">path</span><span
291
+ <span class="method-name">payloads_attrs</span><span
297
292
  class="method-args">()</span>
298
293
  <span class="method-click-advice">click to toggle source</span>
299
294
  </div>
300
295
  </div>
301
296
 
302
297
  <div class="method-description">
303
- <p>Returns the path for the activity.</p>
298
+
304
299
 
305
- <p>Example:</p>
306
-
307
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">path</span>
308
- </pre>
309
-
310
- <p>Returns:</p>
311
-
312
- <pre class="ruby"><span class="ruby-string">&quot;/path/to/activity&quot;</span>
313
- </pre>
314
-
315
- <div class="method-source-code" id="path-source">
316
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 135</span>
317
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">path</span>
318
- <span class="ruby-identifier">primary_payload</span>&amp;.<span class="ruby-identifier">route</span>
300
+ <div class="method-source-code" id="payloads_attrs-source">
301
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 48</span>
302
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">payloads_attrs</span>
303
+ <span class="ruby-identifier">ordered_payloads</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">payload</span><span class="ruby-operator">|</span>
304
+ {
305
+ <span class="ruby-value">related_to_activity_as:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">related_to_activity_as</span>,
306
+ <span class="ruby-value">record_type:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_type</span>,
307
+ <span class="ruby-value">record_id:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">deleted?</span> <span class="ruby-operator">?</span> <span class="ruby-keyword">nil</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_id</span>,
308
+ <span class="ruby-value">attrs:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">attrs</span>,
309
+ <span class="ruby-value">route:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">payload_route</span>,
310
+ <span class="ruby-value">record_display_name:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_display_name</span>,
311
+ <span class="ruby-value">current_payload:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">current_payload</span>,
312
+ <span class="ruby-value">data_owner:</span> <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">data_owner</span>
313
+ }
314
+ <span class="ruby-keyword">end</span>
319
315
  <span class="ruby-keyword">end</span></pre>
320
316
  </div>
321
317
  </div>
@@ -323,31 +319,32 @@
323
319
 
324
320
  </div>
325
321
 
326
- <div id="method-i-primary_payload_attrs" class="method-detail ">
322
+ <div id="method-i-primary_route" class="method-detail ">
327
323
  <div class="method-header">
328
324
  <div class="method-heading">
329
- <span class="method-name">primary_payload_attrs</span><span
325
+ <span class="method-name">primary_route</span><span
330
326
  class="method-args">()</span>
331
327
  <span class="method-click-advice">click to toggle source</span>
332
328
  </div>
333
329
  </div>
334
330
 
335
331
  <div class="method-description">
336
- <p>Returns the attributes for the primary payload, without the relations.</p>
332
+ <p>Returns the path for the activity.</p>
337
333
 
338
334
  <p>Example:</p>
339
335
 
340
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">primary_payload_attrs</span>
336
+ <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">path</span>
341
337
  </pre>
342
338
 
343
339
  <p>Returns:</p>
344
340
 
345
- <pre>{ &quot;KEY_A&quot; =&gt; &quot;VALUE_A&quot;, &quot;KEY_B&quot; =&gt; &quot;VALUE_B&quot;, ... }</pre>
341
+ <pre class="ruby"><span class="ruby-string">&quot;/path/to/activity&quot;</span>
342
+ </pre>
346
343
 
347
- <div class="method-source-code" id="primary_payload_attrs-source">
348
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 88</span>
349
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">primary_payload_attrs</span>
350
- <span class="ruby-identifier">primary_payload</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">primary_payload</span>.<span class="ruby-identifier">attrs</span> <span class="ruby-operator">:</span> {}
344
+ <div class="method-source-code" id="primary_route-source">
345
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 104</span>
346
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">primary_route</span>
347
+ <span class="ruby-identifier">primary_payload</span>.<span class="ruby-identifier">payload_route</span>
351
348
  <span class="ruby-keyword">end</span></pre>
352
349
  </div>
353
350
  </div>
@@ -378,11 +375,9 @@
378
375
  </pre>
379
376
 
380
377
  <div class="method-source-code" id="record_display_name-source">
381
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 120</span>
378
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 91</span>
382
379
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">record_display_name</span>
383
- <span class="ruby-keyword">return</span> <span class="ruby-constant">I18n</span>.<span class="ruby-identifier">t</span>(<span class="ruby-string">&#39;loggable.activity.deleted&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">encrypted_record_display_name</span>.<span class="ruby-identifier">nil?</span>
384
-
385
- <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">Encryption</span>.<span class="ruby-identifier">decrypt</span>(<span class="ruby-identifier">encrypted_record_display_name</span>, <span class="ruby-identifier">record_key</span>)
380
+ <span class="ruby-identifier">primary_payload</span>.<span class="ruby-identifier">record_display_name</span>
386
381
  <span class="ruby-keyword">end</span></pre>
387
382
  </div>
388
383
  </div>
@@ -390,92 +385,29 @@
390
385
 
391
386
  </div>
392
387
 
393
- <div id="method-i-relations_attrs" class="method-detail ">
394
- <div class="method-header">
395
- <div class="method-heading">
396
- <span class="method-name">relations_attrs</span><span
397
- class="method-args">()</span>
398
- <span class="method-click-advice">click to toggle source</span>
399
- </div>
400
- </div>
401
-
402
- <div class="method-description">
403
- <p>Returns the attributes for the relations.</p>
404
-
405
- <p>Example:</p>
406
-
407
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">relations_attrs</span>
408
- </pre>
409
-
410
- <p>Returns:</p>
411
-
412
- <pre>[
413
- {
414
- record_type: CLASS.NAME,
415
- record_id: INTEGER,
416
- payload_type: ENUM
417
- attrs: { &quot;KEY_A&quot; =&gt; &quot;VALUE_A&quot;, &quot;KEY_B&quot; =&gt; &quot;VALUE_B&quot;, ... }
418
- }
419
- ]</pre>
420
-
421
- <div class="method-source-code" id="relations_attrs-source">
422
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 107</span>
423
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">relations_attrs</span>
424
- <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">filter</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;current_association&#39;</span> }
425
- <span class="ruby-keyword">end</span></pre>
426
- </div>
427
- </div>
428
-
388
+ </section>
429
389
 
430
- </div>
390
+ <section id="private-instance-5Buntitled-5D-method-details" class="method-section">
391
+ <header>
392
+ <h3>Private Instance Methods</h3>
393
+ </header>
431
394
 
432
- <div id="method-i-update_activity_attrs" class="method-detail ">
395
+ <div id="method-i-actor_deleted-3F" class="method-detail ">
433
396
  <div class="method-header">
434
397
  <div class="method-heading">
435
- <span class="method-name">update_activity_attrs</span><span
398
+ <span class="method-name">actor_deleted?</span><span
436
399
  class="method-args">()</span>
437
400
  <span class="method-click-advice">click to toggle source</span>
438
401
  </div>
439
402
  </div>
440
403
 
441
404
  <div class="method-description">
442
- <p>Returns a hash describing the attributes of an update activity, including updated attributes for a record and any updated related attributes.</p>
443
-
444
- <p>Example:</p>
445
-
446
- <pre class="ruby"><span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">update_activity_attrs</span>
447
- </pre>
448
-
449
- <p>The return value is structured as follows:</p>
450
- <ul><li>
451
- <p>:update_attrs contains the attributes of the record being updated, detailing changes from previous to new values.</p>
452
- </li><li>
453
- <p>:updated_relations_attrs is an array of hashes, each representing an updated related record. Each hash details the previous and current attributes of the relation.</p>
454
- </li></ul>
455
-
456
- <p>Example Return Structure:</p>
405
+ <p>Check if the actor is deleted. If the actor is deleted, it will return true. This way we don’t rely on access to the main DB to check if the actor is deleted.</p>
457
406
 
458
- <pre>{
459
- update_attrs: {
460
- record_class: &quot;CLASS.NAME&quot;,
461
- attrs: [{ &quot;KEY&quot; =&gt; { from: &quot;OLD_VALUE&quot;, to: &quot;NEW_VALUE&quot; } }]
462
- },
463
- updated_relations_attrs: [
464
- {
465
- record_class: &quot;CLASS.NAME&quot;,
466
- previous_attrs: { attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } },
467
- current_attrs: { attrs: { &quot;KEY&quot; =&gt; &quot;VALUE&quot;, ... } }
468
- }
469
- ]
470
- }</pre>
471
-
472
- <div class="method-source-code" id="update_activity_attrs-source">
473
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 72</span>
474
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">update_activity_attrs</span>
475
- {
476
- <span class="ruby-value">update_attrs:</span>,
477
- <span class="ruby-value">updated_relations_attrs:</span>
478
- }
407
+ <div class="method-source-code" id="actor_deleted-3F-source">
408
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 177</span>
409
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_deleted?</span>
410
+ <span class="ruby-identifier">actor_secret_key</span>.<span class="ruby-identifier">nil?</span>
479
411
  <span class="ruby-keyword">end</span></pre>
480
412
  </div>
481
413
  </div>
@@ -483,17 +415,10 @@
483
415
 
484
416
  </div>
485
417
 
486
- </section>
487
-
488
- <section id="private-instance-5Buntitled-5D-method-details" class="method-section">
489
- <header>
490
- <h3>Private Instance Methods</h3>
491
- </header>
492
-
493
- <div id="method-i-actor_key" class="method-detail ">
418
+ <div id="method-i-actor_secret_key" class="method-detail ">
494
419
  <div class="method-header">
495
420
  <div class="method-heading">
496
- <span class="method-name">actor_key</span><span
421
+ <span class="method-name">actor_secret_key</span><span
497
422
  class="method-args">()</span>
498
423
  <span class="method-click-advice">click to toggle source</span>
499
424
  </div>
@@ -502,12 +427,11 @@
502
427
  <div class="method-description">
503
428
  <p>Returns the key for the actor.</p>
504
429
 
505
- <div class="method-source-code" id="actor_key-source">
506
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 224</span>
507
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_key</span>
508
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">actor</span>.<span class="ruby-identifier">nil?</span>
509
-
510
- <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">EncryptionKey</span>.<span class="ruby-identifier">for_record</span>(<span class="ruby-identifier">actor</span>)&amp;.<span class="ruby-identifier">key</span>
430
+ <div class="method-source-code" id="actor_secret_key-source">
431
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 182</span>
432
+ <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">actor_secret_key</span>
433
+ <span class="ruby-comment"># @actor_key_secret_key ||=</span>
434
+ <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">EncryptionKey</span>.<span class="ruby-identifier">for_record_by_type_and_id</span>(<span class="ruby-identifier">actor_type</span>, <span class="ruby-identifier">actor_id</span>)&amp;.<span class="ruby-identifier">secret_key</span>
511
435
  <span class="ruby-keyword">end</span></pre>
512
436
  </div>
513
437
  </div>
@@ -528,7 +452,7 @@
528
452
  <p>Validates that the activity has at least one payload.</p>
529
453
 
530
454
  <div class="method-source-code" id="must_have_at_least_one_payload-source">
531
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 231</span>
455
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 188</span>
532
456
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">must_have_at_least_one_payload</span>
533
457
  <span class="ruby-identifier">errors</span>.<span class="ruby-identifier">add</span>(<span class="ruby-value">:payloads</span>, <span class="ruby-string">&#39;must have at least one payload&#39;</span>) <span class="ruby-keyword">if</span> <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">empty?</span>
534
458
  <span class="ruby-keyword">end</span></pre>
@@ -548,35 +472,13 @@
548
472
  </div>
549
473
 
550
474
  <div class="method-description">
551
- <p>Returns payloads sorted by :payload_type.</p>
475
+ <p>Returns payloads sorted by :related_to_activity_as.</p>
552
476
 
553
477
  <div class="method-source-code" id="ordered_payloads-source">
554
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 212</span>
478
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 162</span>
555
479
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">ordered_payloads</span>
556
- <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">order</span>(<span class="ruby-value">:payload_type</span>)
557
- <span class="ruby-keyword">end</span></pre>
558
- </div>
559
- </div>
560
-
561
-
562
- </div>
563
-
564
- <div id="method-i-previous_associations_attrs" class="method-detail ">
565
- <div class="method-header">
566
- <div class="method-heading">
567
- <span class="method-name">previous_associations_attrs</span><span
568
- class="method-args">()</span>
569
- <span class="method-click-advice">click to toggle source</span>
570
- </div>
571
- </div>
572
-
573
- <div class="method-description">
574
- <p>Returns the previous association attributes.</p>
575
-
576
- <div class="method-source-code" id="previous_associations_attrs-source">
577
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 207</span>
578
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">previous_associations_attrs</span>
579
- <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">select</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;previous_association&#39;</span> }
480
+ <span class="ruby-comment"># payloads.order(related_to_activity_as: :desc)</span>
481
+ <span class="ruby-identifier">payloads</span>
580
482
  <span class="ruby-keyword">end</span></pre>
581
483
  </div>
582
484
  </div>
@@ -594,12 +496,19 @@
594
496
  </div>
595
497
 
596
498
  <div class="method-description">
597
- <p>Returns the primary payload.</p>
499
+ <p>Returns the primary payload associated with the activity.</p>
500
+
501
+ <p>Example usage:</p>
502
+
503
+ <pre class="ruby"><span class="ruby-identifier">payload</span> = <span class="ruby-ivar">@activity</span>.<span class="ruby-identifier">primary_payload</span>
504
+ <span class="ruby-identifier">payload</span>.<span class="ruby-identifier">record_type</span> <span class="ruby-comment"># =&gt; &#39;SOMD_MODEL_NAME&#39;</span>
505
+ </pre>
598
506
 
599
507
  <div class="method-source-code" id="primary_payload-source">
600
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 189</span>
508
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 156</span>
601
509
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">primary_payload</span>
602
- <span class="ruby-identifier">ordered_payloads</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">payload_type</span> <span class="ruby-operator">==</span> <span class="ruby-string">&#39;primary_payload&#39;</span> }
510
+ <span class="ruby-identifier">related_to_activity_as</span> = <span class="ruby-node">%w[primary_payload primary_update_payload primary_destroy_payload]</span>
511
+ <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">detect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">related_to_activity_as</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">p</span>.<span class="ruby-identifier">related_to_activity_as</span>) }
603
512
  <span class="ruby-keyword">end</span></pre>
604
513
  </div>
605
514
  </div>
@@ -620,69 +529,11 @@
620
529
  <p>Returns the key for the logged record.</p>
621
530
 
622
531
  <div class="method-source-code" id="record_key-source">
623
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 217</span>
532
+ <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 168</span>
624
533
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">record_key</span>
625
534
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">record</span>.<span class="ruby-identifier">nil?</span>
626
535
 
627
- <span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">EncryptionKey</span>.<span class="ruby-identifier">for_record</span>(<span class="ruby-identifier">record</span>)&amp;.<span class="ruby-identifier">key</span>
628
- <span class="ruby-keyword">end</span></pre>
629
- </div>
630
- </div>
631
-
632
-
633
- </div>
634
-
635
- <div id="method-i-update_attrs" class="method-detail ">
636
- <div class="method-header">
637
- <div class="method-heading">
638
- <span class="method-name">update_attrs</span><span
639
- class="method-args">()</span>
640
- <span class="method-click-advice">click to toggle source</span>
641
- </div>
642
- </div>
643
-
644
- <div class="method-description">
645
- <p>Returns the attributes for the update+payload.</p>
646
-
647
- <div class="method-source-code" id="update_attrs-source">
648
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 180</span>
649
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">update_attrs</span>
650
- <span class="ruby-identifier">update_payload_attrs</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;update_payload&#39;</span> }
651
- <span class="ruby-keyword">return</span> <span class="ruby-keyword">nil</span> <span class="ruby-keyword">unless</span> <span class="ruby-identifier">update_payload_attrs</span>
652
-
653
- <span class="ruby-identifier">update_payload_attrs</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value">:payload_type</span>)
654
- <span class="ruby-identifier">update_payload_attrs</span>
655
- <span class="ruby-keyword">end</span></pre>
656
- </div>
657
- </div>
658
-
659
-
660
- </div>
661
-
662
- <div id="method-i-updated_relations_attrs" class="method-detail ">
663
- <div class="method-header">
664
- <div class="method-heading">
665
- <span class="method-name">updated_relations_attrs</span><span
666
- class="method-args">()</span>
667
- <span class="method-click-advice">click to toggle source</span>
668
- </div>
669
- </div>
670
-
671
- <div class="method-description">
672
- <p>Returns the attributes for the updated relations.</p>
673
-
674
- <div class="method-source-code" id="updated_relations_attrs-source">
675
- <pre><span class="ruby-comment"># File lib/loggable_activity/activity.rb, line 194</span>
676
- <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">updated_relations_attrs</span>
677
- <span class="ruby-identifier">grouped_associations</span> = <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">group_by</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:record_type</span>] }
678
-
679
- <span class="ruby-identifier">grouped_associations</span>.<span class="ruby-identifier">map</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record_type</span>, <span class="ruby-identifier">payloads</span><span class="ruby-operator">|</span>
680
- <span class="ruby-identifier">previous_attrs</span> = <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;previous_association&#39;</span> }
681
- <span class="ruby-identifier">current_attrs</span> = <span class="ruby-identifier">payloads</span>.<span class="ruby-identifier">find</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">p</span>[<span class="ruby-value">:payload_type</span>] <span class="ruby-operator">==</span> <span class="ruby-string">&#39;current_association&#39;</span> }
682
- <span class="ruby-keyword">next</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">previous_attrs</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">current_attrs</span>.<span class="ruby-identifier">nil?</span>
683
-
684
- { <span class="ruby-value">record_type:</span>, <span class="ruby-value">previous_attrs:</span>, <span class="ruby-value">current_attrs:</span> }
685
- <span class="ruby-keyword">end</span>.<span class="ruby-identifier">compact</span>
536
+ <span class="ruby-operator">::</span><span class="ruby-constant">LoggableActivity</span><span class="ruby-operator">::</span><span class="ruby-constant">EncryptionKey</span>.<span class="ruby-identifier">for_record</span>(<span class="ruby-identifier">record</span>)&amp;.<span class="ruby-identifier">secret_key</span>
686
537
  <span class="ruby-keyword">end</span></pre>
687
538
  </div>
688
539
  </div>