sequel_bitemporal 0.8.5 → 0.8.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +6 -1
- data/lib/sequel/plugins/bitemporal.rb +7 -4
- data/sequel_bitemporal.gemspec +1 -1
- data/spec/bitemporal_date_spec.rb +5 -0
- data/spec/bitemporal_serialization_spec.rb +9 -8
- 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: da30635c93f697ffa73f2d8de2ff9f5fdaef6d5a
|
4
|
+
data.tar.gz: cb7e8e67c49db3021b41783be19afb29e1b62e4b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a36ca71c07f927b9426d5ad3bed86dcb7e3e04e81e21ee0f54c8655887d8044e78b8284dee721f827b44122ba1a567b95c7fc4fe394b0a8a7637ae6571273fab
|
7
|
+
data.tar.gz: ea977f5d0dba283b01b72cce00f659c895f2d1a9104bf29fa7b888678bf76e6057830bb519268b853f1c7a38b797fa556c7e39bdf968f845f5ed55bf62ac07b4
|
data/.travis.yml
CHANGED
@@ -126,24 +126,27 @@ module Sequel
|
|
126
126
|
n = Sequel.delay{ ::Sequel::Plugins::Bitemporal.now }
|
127
127
|
if master.use_ranges
|
128
128
|
master.existence_range_contains(t, j) &
|
129
|
-
(Sequel.qualify(j, :valid_to) > n)
|
129
|
+
(Sequel.qualify(j, :valid_to) > n) &
|
130
|
+
(Sequel.qualify(j, :valid_from) != Sequel.qualify(j, :valid_to))
|
130
131
|
else
|
131
132
|
e = Sequel.qualify j, :expired_at
|
132
133
|
(Sequel.qualify(j, :created_at) <= t) &
|
133
134
|
Sequel.|({e=>nil}, e > t) &
|
134
|
-
(Sequel.qualify(j, :valid_to) > n)
|
135
|
+
(Sequel.qualify(j, :valid_to) > n) &
|
136
|
+
(Sequel.qualify(j, :valid_from) != Sequel.qualify(j, :valid_to))
|
135
137
|
end
|
136
138
|
end) do |ds|
|
137
139
|
t = Sequel.delay{ ::Sequel::Plugins::Bitemporal.point_in_time }
|
138
140
|
n = Sequel.delay{ ::Sequel::Plugins::Bitemporal.now }
|
139
141
|
if master.use_ranges
|
140
142
|
existence_conditions = master.existence_range_contains t
|
141
|
-
ds.where{ existence_conditions & (:valid_to > n) }
|
143
|
+
ds.where{ existence_conditions & (:valid_to > n) & (:valid_from != :valid_to) }
|
142
144
|
else
|
143
145
|
ds.where do
|
144
146
|
(created_at <= t) &
|
145
147
|
Sequel.|({expired_at=>nil}, expired_at > t) &
|
146
|
-
(valid_to > n)
|
148
|
+
(valid_to > n) &
|
149
|
+
(valid_from != valid_to)
|
147
150
|
end
|
148
151
|
end
|
149
152
|
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.8.
|
6
|
+
s.version = "0.8.6"
|
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"
|
@@ -523,6 +523,11 @@ describe "Sequel::Plugins::Bitemporal" do
|
|
523
523
|
master.destroy
|
524
524
|
expect(@master_class.eager_graph(:current_or_future_versions).where(Sequel.negate(current_or_future_versions__id: nil)).all).to be_empty
|
525
525
|
end
|
526
|
+
it "association current or future versions ignores versions with valid_from==valid_to" do
|
527
|
+
master = @master_class.new
|
528
|
+
master.update_attributes name: "Single Standard", price: 99, valid_to: Date.today
|
529
|
+
expect(master.current_or_future_versions).to be_empty
|
530
|
+
end
|
526
531
|
it "allows loading masters with current or future versions" do
|
527
532
|
master_destroyed = @master_class.new
|
528
533
|
master_destroyed.update_attributes name: "Single Standard", price: 98
|
@@ -58,14 +58,15 @@ describe "Sequel::Plugins::Bitemporal", :skip_jdbc_sqlite do
|
|
58
58
|
master.update_attributes valid_from: initial_today+2, length: 3, width: 4
|
59
59
|
expect(master.propagated_during_last_save.size).to eq(1)
|
60
60
|
end
|
61
|
-
|
62
|
-
expect(
|
63
|
-
expect(
|
64
|
-
expect(
|
65
|
-
expect(
|
66
|
-
expect(
|
67
|
-
expect(
|
68
|
-
expect(
|
61
|
+
versions = master.versions_dataset.order(:id).all
|
62
|
+
expect(versions[0].name).to eq({"full_name" => "Single Standard"})
|
63
|
+
expect(versions[1].name).to eq({"full_name" => "Single Standard"})
|
64
|
+
expect(versions[2].name).to eq({"full_name" => "King Size"})
|
65
|
+
expect(versions[3].name).to eq({"full_name" => "Single Standard"})
|
66
|
+
expect(versions[4].name).to eq({"full_name" => "Single Standard"})
|
67
|
+
expect(versions[5].name).to eq({"full_name" => "Single Standard"})
|
68
|
+
expect(versions[6].name).to eq({"full_name" => "Single Standard"})
|
69
|
+
expect(versions[7].name).to eq({"full_name" => "Single Standard"})
|
69
70
|
ensure
|
70
71
|
@master_class.instance_variable_set :@propagate_per_column, propagate_per_column
|
71
72
|
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.8.
|
4
|
+
version: 0.8.6
|
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:
|
12
|
+
date: 2016-08-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sequel
|