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(