lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.8.5 vs lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.8.6
- old
+ new
@@ -124,27 +124,30 @@
master.one_to_many :current_or_future_versions, class: version, key: :master_id, :graph_block=>(proc do |j, lj, js|
t = Sequel.delay{ ::Sequel::Plugins::Bitemporal.point_in_time }
n = Sequel.delay{ ::Sequel::Plugins::Bitemporal.now }
if master.use_ranges
master.existence_range_contains(t, j) &
- (Sequel.qualify(j, :valid_to) > n)
+ (Sequel.qualify(j, :valid_to) > n) &
+ (Sequel.qualify(j, :valid_from) != Sequel.qualify(j, :valid_to))
else
e = Sequel.qualify j, :expired_at
(Sequel.qualify(j, :created_at) <= t) &
Sequel.|({e=>nil}, e > t) &
- (Sequel.qualify(j, :valid_to) > n)
+ (Sequel.qualify(j, :valid_to) > n) &
+ (Sequel.qualify(j, :valid_from) != Sequel.qualify(j, :valid_to))
end
end) do |ds|
t = Sequel.delay{ ::Sequel::Plugins::Bitemporal.point_in_time }
n = Sequel.delay{ ::Sequel::Plugins::Bitemporal.now }
if master.use_ranges
existence_conditions = master.existence_range_contains t
- ds.where{ existence_conditions & (:valid_to > n) }
+ ds.where{ existence_conditions & (:valid_to > n) & (:valid_from != :valid_to) }
else
ds.where do
(created_at <= t) &
Sequel.|({expired_at=>nil}, expired_at > t) &
- (valid_to > n)
+ (valid_to > n) &
+ (valid_from != valid_to)
end
end
end
master.def_dataset_method :with_current_or_future_versions do
eager_graph(:current_or_future_versions).where(