sequel_bitemporal 0.8.3 → 0.8.4
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 +4 -4
- data/.ruby-version +1 -1
- data/lib/sequel/plugins/bitemporal.rb +19 -0
- data/sequel_bitemporal.gemspec +1 -1
- data/spec/bitemporal_date_spec.rb +34 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc6bb9ceee4fe755f012319a851647fe9037b91e
|
4
|
+
data.tar.gz: 2131ffd83c0ff24ff6bd870080d6b6763d672430
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bc79a515a21dac544a6e32c8ff3e08326d848a4936a173910b7f3cb98dbd9be439e5dbd8807269b0bd3b52eaa4d8c7f528f64a697a9ce11c4f50053a46dffed
|
7
|
+
data.tar.gz: acf77c4b2b1865561d5dd93b2f87c4e39910a5a7a1dc26e5e0984c9df0f65770f78492dea145225323f485619203225ee5f58626689f99820b3c10d8c7f08967
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.2.
|
1
|
+
2.2.2
|
@@ -397,6 +397,25 @@ module Sequel
|
|
397
397
|
end
|
398
398
|
end
|
399
399
|
|
400
|
+
def next_version
|
401
|
+
@next_version ||= begin
|
402
|
+
return if new?
|
403
|
+
t = ::Sequel::Plugins::Bitemporal.point_in_time
|
404
|
+
n = ::Sequel::Plugins::Bitemporal.now
|
405
|
+
if use_ranges = self.class.use_ranges
|
406
|
+
range_conditions = self.class.existence_range_contains t
|
407
|
+
end
|
408
|
+
versions_dataset.where do
|
409
|
+
if use_ranges
|
410
|
+
range_conditions
|
411
|
+
else
|
412
|
+
(created_at <= t) &
|
413
|
+
Sequel.|({expired_at=>nil}, expired_at > t)
|
414
|
+
end & (valid_from > n)
|
415
|
+
end.order(Sequel.asc(:valid_to), Sequel.desc(:created_at)).first
|
416
|
+
end
|
417
|
+
end
|
418
|
+
|
400
419
|
def restore(attrs={})
|
401
420
|
return false unless deleted?
|
402
421
|
last_version_attributes = if last_version
|
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.8.
|
6
|
+
s.version = "0.8.4"
|
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"
|
@@ -565,7 +565,7 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
565
565
|
expect(master.price).to eq(98)
|
566
566
|
end
|
567
567
|
it "avoids delegation of columns which are both in master and version" do
|
568
|
-
closure = @version_class
|
568
|
+
closure = Class.new @version_class
|
569
569
|
DB.create_table! :rooms_with_name do
|
570
570
|
primary_key :id
|
571
571
|
String :name
|
@@ -691,6 +691,31 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
691
691
|
expect(subject.last_version).to eq(subject.versions.last)
|
692
692
|
end
|
693
693
|
end
|
694
|
+
context "#next_version" do
|
695
|
+
subject{ @master_class.new }
|
696
|
+
it "is nil unless persisted" do
|
697
|
+
expect(subject.next_version).to be_nil
|
698
|
+
end
|
699
|
+
it "is nil with current version and no future version" do
|
700
|
+
subject.update_attributes name: "Single Standard", price: 94
|
701
|
+
expect(subject.next_version).to be_nil
|
702
|
+
end
|
703
|
+
it "is next version with both current version and future version" do
|
704
|
+
subject.update_attributes name: "Single Standard", price: 94
|
705
|
+
subject.update_attributes price: 95, valid_from: Date.today+1
|
706
|
+
expect( subject.current_version ).not_to be_nil
|
707
|
+
expect( subject.current_version.price ).to eq 94
|
708
|
+
expect( subject.next_version ).not_to be_nil
|
709
|
+
expect( subject.next_version.price ).to eq 95
|
710
|
+
end
|
711
|
+
it "is next version with future versions but no current version" do
|
712
|
+
subject.update_attributes name: "Single Standard", price: 94, valid_from: Date.today+2
|
713
|
+
subject.update_attributes name: "Single Standard", price: 92, valid_from: Date.today+1
|
714
|
+
expect( subject.current_version ).to be_nil
|
715
|
+
expect( subject.next_version ).not_to be_nil
|
716
|
+
expect( subject.next_version.price ).to eq 92
|
717
|
+
end
|
718
|
+
end
|
694
719
|
context "#restore" do
|
695
720
|
subject{ @master_class.new }
|
696
721
|
it "make last version current" do
|
@@ -705,6 +730,14 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
705
730
|
expect(subject.current_version.price).to eq(94)
|
706
731
|
end
|
707
732
|
end
|
733
|
+
it "master.current_version.master is master" do
|
734
|
+
master = @master_class.new
|
735
|
+
master.update_attributes name: "Single Standard", price: 98
|
736
|
+
expect( master.current_version.master.object_id ).to eq master.object_id
|
737
|
+
# impossible for sequel to resolve because of the eager_graph:
|
738
|
+
master = @master_class.with_current_version.all.first
|
739
|
+
expect( master.current_version.master.object_id ).not_to eq master.object_id
|
740
|
+
end
|
708
741
|
end
|
709
742
|
|
710
743
|
describe "Sequel::Plugins::Bitemporal", "with audit" do
|
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.8.
|
4
|
+
version: 0.8.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joseph HALTER
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-06-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sequel
|