sequel_bitemporal 0.1.8 → 0.1.9
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.
- data/lib/sequel/plugins/bitemporal.rb +15 -10
- data/sequel_bitemporal.gemspec +1 -1
- metadata +13 -19
@@ -52,6 +52,11 @@ module Sequel
|
|
52
52
|
module InstanceMethods
|
53
53
|
attr_reader :pending_version
|
54
54
|
|
55
|
+
def before_validation
|
56
|
+
prepare_pending_version
|
57
|
+
super
|
58
|
+
end
|
59
|
+
|
55
60
|
def validate
|
56
61
|
super
|
57
62
|
pending_version.errors.each do |key, key_errors|
|
@@ -82,6 +87,7 @@ module Sequel
|
|
82
87
|
attributes.delete :id
|
83
88
|
@pending_version ||= model.version_class.new
|
84
89
|
pending_version.set attributes
|
90
|
+
pending_version.master_id = id unless new?
|
85
91
|
end
|
86
92
|
|
87
93
|
def update_attributes(attributes={})
|
@@ -92,15 +98,12 @@ module Sequel
|
|
92
98
|
def after_create
|
93
99
|
super
|
94
100
|
if pending_version
|
95
|
-
prepare_pending_version
|
96
101
|
return false unless save_pending_version
|
97
102
|
end
|
98
103
|
end
|
99
104
|
|
100
105
|
def before_update
|
101
106
|
if pending_version
|
102
|
-
lock!
|
103
|
-
prepare_pending_version
|
104
107
|
expire_previous_versions
|
105
108
|
return false unless save_pending_version
|
106
109
|
end
|
@@ -134,19 +137,14 @@ module Sequel
|
|
134
137
|
private
|
135
138
|
|
136
139
|
def prepare_pending_version
|
140
|
+
return unless pending_version
|
137
141
|
point_in_time = Time.now
|
138
142
|
pending_version.created_at = point_in_time
|
139
143
|
pending_version.valid_from ||= point_in_time
|
140
144
|
end
|
141
145
|
|
142
|
-
def save_pending_version
|
143
|
-
pending_version.valid_to ||= Time.utc 9999
|
144
|
-
success = add_version pending_version
|
145
|
-
@pending_version = nil if success
|
146
|
-
success
|
147
|
-
end
|
148
|
-
|
149
146
|
def expire_previous_versions
|
147
|
+
lock!
|
150
148
|
expired = versions_dataset.where expired_at: nil
|
151
149
|
expired = expired.exclude "valid_from=valid_to"
|
152
150
|
expired = expired.exclude "valid_to<=?", pending_version.valid_from
|
@@ -164,6 +162,13 @@ module Sequel
|
|
164
162
|
versions_dataset.where(id: expired.collect(&:id)).update expired_at: pending_version.created_at
|
165
163
|
end
|
166
164
|
|
165
|
+
def save_pending_version
|
166
|
+
pending_version.valid_to ||= Time.utc 9999
|
167
|
+
success = add_version pending_version
|
168
|
+
@pending_version = nil if success
|
169
|
+
success
|
170
|
+
end
|
171
|
+
|
167
172
|
def save_fossil(expired, attributes={})
|
168
173
|
fossil = model.version_class.new
|
169
174
|
expired_attributes = expired.values.dup
|
data/sequel_bitemporal.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "sequel_bitemporal"
|
6
|
-
s.version = "0.1.
|
6
|
+
s.version = "0.1.9"
|
7
7
|
s.authors = ["Joseph HALTER"]
|
8
8
|
s.email = ["joseph.halter@thetalentbox.com"]
|
9
9
|
s.homepage = "https://github.com/TalentBox/sequel_bitemporal"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel_bitemporal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-11-
|
12
|
+
date: 2011-11-11 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sequel
|
16
|
-
requirement: &
|
16
|
+
requirement: &2160905800 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2160905800
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: sqlite3
|
27
|
-
requirement: &
|
27
|
+
requirement: &2160905360 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2160905360
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &2160904940 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2160904940
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: timecop
|
49
|
-
requirement: &
|
49
|
+
requirement: &2160904520 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2160904520
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rake
|
60
|
-
requirement: &
|
60
|
+
requirement: &2160904100 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2160904100
|
69
69
|
description: Bitemporal versioning for sequel, fully tested.
|
70
70
|
email:
|
71
71
|
- joseph.halter@thetalentbox.com
|
@@ -97,21 +97,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
97
|
- - ! '>='
|
98
98
|
- !ruby/object:Gem::Version
|
99
99
|
version: '0'
|
100
|
-
segments:
|
101
|
-
- 0
|
102
|
-
hash: -617172649856506715
|
103
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
104
101
|
none: false
|
105
102
|
requirements:
|
106
103
|
- - ! '>='
|
107
104
|
- !ruby/object:Gem::Version
|
108
105
|
version: '0'
|
109
|
-
segments:
|
110
|
-
- 0
|
111
|
-
hash: -617172649856506715
|
112
106
|
requirements: []
|
113
107
|
rubyforge_project:
|
114
|
-
rubygems_version: 1.8.
|
108
|
+
rubygems_version: 1.8.6
|
115
109
|
signing_key:
|
116
110
|
specification_version: 3
|
117
111
|
summary: Bitemporal versioning for sequel.
|