timelines 0.2.3 → 0.3.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: 9e0fcaa71f51ce05f909e1476d3697c19cbce690f581357a4dcc0507154456dd
4
- data.tar.gz: 8d8f0580bd04c4dca4f7f64d17b889a68eb11d689f006d24aeff8364632aed28
3
+ metadata.gz: f48e1bf0dfd0471248184f1039e1a1b4d3d338c9891369c5462756f8587f4da1
4
+ data.tar.gz: ddf9d3c52ca93eac3f4435b12ded8db25fb32fb746f283cb08b5982efd4043ea
5
5
  SHA512:
6
- metadata.gz: 80767881c109435b0f5b2e6c1da160f7cd57dd21d2c0b2ad0a0c6793beff2a930e11b2f159b0327ed813dd28435e461818cc533b5c8c244ead969b877d6c0f88
7
- data.tar.gz: cbc54257925c045ea37ac59b85bd3f842060f6d28665cee5dd96a70a4b63affb6202a905c108cd74787186688e719a4abc64622998b3a739f850cf740a0a0417
6
+ metadata.gz: f854359a07cc0007336d067e028f5f88f3415b5203511422d784c3036183fe5f7857ab6079da9018ecb27075b6da097410bce57018732c504dc3e70e880537e2
7
+ data.tar.gz: 6f3cd805f1ef214f135e3a0d2856e806ccf4fbaedd20c414c1b7fe0f0bfd34246fb74b33e4f7fb37a184789319267422abb9df904ff4b7ab206039fe4ae7c11b
data/README.md CHANGED
@@ -10,6 +10,12 @@ include Timelines::Ephemeral
10
10
 
11
11
  This gives you the following Instance methods:
12
12
  ```ruby
13
+ # Returns an AuditTrail object containing the resource and any associated events, in chronological order
14
+ .audit_trail
15
+
16
+ # Returns an AuditTrail object containing the resource and any associated events, in reverse order
17
+ .audit_trail(reverse: true)
18
+
13
19
  # Returns a boolean indicating whether the record is currently active
14
20
  .active?
15
21
 
@@ -0,0 +1,15 @@
1
+ module Timelines
2
+ class AuditTrail
3
+ include ActiveModel::Model
4
+ include ActiveModel::Attributes
5
+ include ActiveModel::Validations
6
+
7
+ attribute :resource
8
+ attribute :reverse
9
+ attribute :events
10
+
11
+ def events
12
+ reverse ? resource.events.reverse : resource.events
13
+ end
14
+ end
15
+ end
@@ -32,7 +32,15 @@ module Timelines
32
32
  end
33
33
 
34
34
  def end!
35
- destroy
35
+ return self if ended_at.present?
36
+
37
+ result = ActiveRecord::Base.transaction do
38
+ run_callbacks(:destroy) do
39
+ update(ended_at: Time.current)
40
+ end
41
+ end
42
+
43
+ result ? self : false
36
44
  end
37
45
 
38
46
  def ended?
@@ -44,13 +52,11 @@ module Timelines
44
52
  end
45
53
 
46
54
  def destroy
47
- return if ended_at.present?
48
-
49
- update(ended_at: Time.current)
55
+ end!
50
56
  end
51
57
 
52
- def self.destroy_all
53
- where(ended_at: nil).update_all(ended_at: Time.current)
58
+ def destroy!
59
+ end!
54
60
  end
55
61
  end
56
62
  end
@@ -0,0 +1,15 @@
1
+ require "active_support/concern"
2
+
3
+ module Timelines
4
+ module HasAuditTrail
5
+ extend ActiveSupport::Concern
6
+
7
+ included do
8
+ include ::Timelines::HasEvents
9
+
10
+ def audit_trail(reverse: false)
11
+ ::Timelines::AuditTrail.new(resource: self, reverse: reverse)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,3 @@
1
1
  module Timelines
2
- VERSION = "0.2.3"
2
+ VERSION = "0.3.1"
3
3
  end
data/lib/timelines.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require "timelines/version"
2
2
  require "timelines/models/concerns/ephemeral"
3
3
  require "timelines/models/concerns/has_events"
4
+ require "timelines/models/concerns/has_audit_trail"
5
+ require "timelines/models/concerns/audit_trail"
4
6
  require "timelines/models/event"
5
7
 
6
8
  module Timelines
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timelines
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Gilchrist
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-18 00:00:00.000000000 Z
11
+ date: 2024-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -39,7 +39,9 @@ files:
39
39
  - lib/generators/timelines/install/templates/create_timelines_events.rb
40
40
  - lib/tasks/timelines_tasks.rake
41
41
  - lib/timelines.rb
42
+ - lib/timelines/models/concerns/audit_trail.rb
42
43
  - lib/timelines/models/concerns/ephemeral.rb
44
+ - lib/timelines/models/concerns/has_audit_trail.rb
43
45
  - lib/timelines/models/concerns/has_events.rb
44
46
  - lib/timelines/models/event.rb
45
47
  - lib/timelines/version.rb
@@ -65,7 +67,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
67
  - !ruby/object:Gem::Version
66
68
  version: '0'
67
69
  requirements: []
68
- rubygems_version: 3.5.4
70
+ rubygems_version: 3.5.10
69
71
  signing_key:
70
72
  specification_version: 4
71
73
  summary: Library for managing historical records.