timelines 0.2.3 → 0.3.1

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