sequel_bitemporal 0.3.1 → 0.4.0
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/Gemfile +2 -1
- data/lib/sequel/plugins/bitemporal.rb +4 -8
- data/sequel_bitemporal.gemspec +2 -2
- data/spec/bitemporal_date_spec.rb +4 -4
- data/spec/bitemporal_time_spec.rb +3 -3
- metadata +16 -16
data/Gemfile
CHANGED
@@ -33,10 +33,10 @@ module Sequel
|
|
33
33
|
raise Error, "bitemporal plugin requires the following missing column#{"s" if missing.size>1} on version class: #{missing.join(", ")}" unless missing.empty?
|
34
34
|
master.instance_eval do
|
35
35
|
@version_class = version
|
36
|
-
@
|
36
|
+
@current_version_alias_name = "#{name ? underscore(demodulize(name)) : table_name}_current_version".to_sym
|
37
37
|
end
|
38
38
|
master.one_to_many :versions, class: version, key: :master_id
|
39
|
-
master.one_to_one
|
39
|
+
master.one_to_one :current_version, class: version, key: :master_id, graph_alias_base: master.current_version_alias_name, :graph_block=>(proc do |j, lj, js|
|
40
40
|
t = ::Sequel::Plugins::Bitemporal.point_in_time
|
41
41
|
n = ::Sequel::Plugins::Bitemporal.now
|
42
42
|
e = :expired_at.qualify(j)
|
@@ -47,7 +47,7 @@ module Sequel
|
|
47
47
|
ds.where{(created_at <= t) & ({expired_at=>nil} | (expired_at > t)) & (valid_from <= n) & (valid_to > n)}
|
48
48
|
end
|
49
49
|
master.def_dataset_method :with_current_version do
|
50
|
-
eager_graph(
|
50
|
+
eager_graph(:current_version).where({:id.qualify(model.current_version_alias_name) => nil}.sql_negate)
|
51
51
|
end
|
52
52
|
master.one_to_many :current_or_future_versions, class: version, key: :master_id, :graph_block=>(proc do |j, lj, js|
|
53
53
|
t = ::Sequel::Plugins::Bitemporal.point_in_time
|
@@ -88,7 +88,7 @@ module Sequel
|
|
88
88
|
end
|
89
89
|
end
|
90
90
|
module ClassMethods
|
91
|
-
attr_reader :version_class, :
|
91
|
+
attr_reader :version_class, :current_version_alias_name
|
92
92
|
end
|
93
93
|
module DatasetMethods
|
94
94
|
end
|
@@ -107,10 +107,6 @@ module Sequel
|
|
107
107
|
end if pending_version && !pending_version.valid?
|
108
108
|
end
|
109
109
|
|
110
|
-
def current_version(*args)
|
111
|
-
send(self.class.current_version_name, *args)
|
112
|
-
end
|
113
|
-
|
114
110
|
def pending_or_current_version
|
115
111
|
pending_version || current_version
|
116
112
|
end
|
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.
|
6
|
+
s.version = "0.4.0"
|
7
7
|
s.authors = ["Joseph HALTER", "Jonathan TRON"]
|
8
8
|
s.email = ["joseph.halter@thetalentbox.com", "jonathan.tron@thetalentbox.com"]
|
9
9
|
s.homepage = "https://github.com/TalentBox/sequel_bitemporal"
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
16
16
|
s.require_paths = ["lib"]
|
17
17
|
|
18
|
-
s.add_runtime_dependency "sequel"
|
18
|
+
s.add_runtime_dependency "sequel", "~> 3.30.0"
|
19
19
|
|
20
20
|
s.add_development_dependency "sqlite3"
|
21
21
|
s.add_development_dependency "rspec", "~> 2.8.0.rc1"
|
@@ -46,7 +46,7 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
46
46
|
end
|
47
47
|
it "checks required columns are present" do
|
48
48
|
lambda{
|
49
|
-
@version_class.plugin :bitemporal, :
|
49
|
+
@version_class.plugin :bitemporal, version_class: @master_class
|
50
50
|
}.should raise_error Sequel::Error, "bitemporal plugin requires the following missing columns on version class: master_id, valid_from, valid_to, created_at, expired_at"
|
51
51
|
end
|
52
52
|
it "propagates errors from version to master" do
|
@@ -296,10 +296,10 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
296
296
|
master = @master_class.new
|
297
297
|
master.update_attributes name: "Single Standard", price: 98
|
298
298
|
master.update_attributes name: "Single Standard", price: 94, valid_from: Date.today+2
|
299
|
-
@master_class.eager_graph(:
|
299
|
+
@master_class.eager_graph(:current_version).where("rooms_current_version.id IS NOT NULL").first.should be
|
300
300
|
Timecop.freeze Date.today+1
|
301
301
|
master.destroy
|
302
|
-
@master_class.eager_graph(:
|
302
|
+
@master_class.eager_graph(:current_version).where("rooms_current_version.id IS NOT NULL").first.should be_nil
|
303
303
|
end
|
304
304
|
it "allows loading masters with a current version" do
|
305
305
|
master_destroyed = @master_class.new
|
@@ -421,7 +421,7 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
421
421
|
plugin :bitemporal, version_class: MyNameVersion
|
422
422
|
end
|
423
423
|
expect do
|
424
|
-
MyName.eager_graph
|
424
|
+
MyName.eager_graph(:current_version).where("my_name_current_version.id IS NOT NULL").first
|
425
425
|
end.not_to raise_error
|
426
426
|
Object.send :remove_const, :MyName
|
427
427
|
Object.send :remove_const, :MyNameVersion
|
@@ -297,10 +297,10 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
297
297
|
master = @master_class.new
|
298
298
|
master.update_attributes name: "Single Standard", price: 98
|
299
299
|
master.update_attributes name: "Single Standard", price: 94, valid_from: Time.now+2*hour
|
300
|
-
@master_class.eager_graph(:current_version).where("
|
300
|
+
@master_class.eager_graph(:current_version).where("rooms_current_version.id IS NOT NULL").first.should be
|
301
301
|
Timecop.freeze Time.now+hour
|
302
302
|
master.destroy
|
303
|
-
@master_class.eager_graph(:current_version).where("
|
303
|
+
@master_class.eager_graph(:current_version).where("rooms_current_version.id IS NOT NULL").first.should be_nil
|
304
304
|
end
|
305
305
|
it "allows loading masters with a current version" do
|
306
306
|
master_destroyed = @master_class.new
|
@@ -364,4 +364,4 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
364
364
|
master_with_future.update_attributes name: "Single Standard", price: 94, valid_from: Time.now+2*hour
|
365
365
|
@master_class.with_current_or_future_versions.all.should have(2).item
|
366
366
|
end
|
367
|
-
end
|
367
|
+
end
|
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.
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,22 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-12-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sequel
|
17
|
-
requirement: &
|
17
|
+
requirement: &70323408143320 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - ~>
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
22
|
+
version: 3.30.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70323408143320
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: sqlite3
|
28
|
-
requirement: &
|
28
|
+
requirement: &70323408141540 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70323408141540
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec
|
39
|
-
requirement: &
|
39
|
+
requirement: &70323408139620 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 2.8.0.rc1
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70323408139620
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: timecop
|
50
|
-
requirement: &
|
50
|
+
requirement: &70323408138300 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70323408138300
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: rake
|
61
|
-
requirement: &
|
61
|
+
requirement: &70323408148700 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70323408148700
|
70
70
|
description: Bitemporal versioning for sequel, fully tested.
|
71
71
|
email:
|
72
72
|
- joseph.halter@thetalentbox.com
|
@@ -101,7 +101,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
101
|
version: '0'
|
102
102
|
segments:
|
103
103
|
- 0
|
104
|
-
hash: -
|
104
|
+
hash: -2408522317545363465
|
105
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
106
|
none: false
|
107
107
|
requirements:
|
@@ -110,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
110
110
|
version: '0'
|
111
111
|
segments:
|
112
112
|
- 0
|
113
|
-
hash: -
|
113
|
+
hash: -2408522317545363465
|
114
114
|
requirements: []
|
115
115
|
rubyforge_project:
|
116
116
|
rubygems_version: 1.8.10
|