lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.8.3 vs lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.8.4
- old
+ new
@@ -395,9 +395,28 @@
end & (valid_from <= n)
end.order(Sequel.desc(:valid_to), Sequel.desc(:created_at)).first
end
end
+ def next_version
+ @next_version ||= begin
+ return if new?
+ t = ::Sequel::Plugins::Bitemporal.point_in_time
+ n = ::Sequel::Plugins::Bitemporal.now
+ if use_ranges = self.class.use_ranges
+ range_conditions = self.class.existence_range_contains t
+ end
+ versions_dataset.where do
+ if use_ranges
+ range_conditions
+ else
+ (created_at <= t) &
+ Sequel.|({expired_at=>nil}, expired_at > t)
+ end & (valid_from > n)
+ end.order(Sequel.asc(:valid_to), Sequel.desc(:created_at)).first
+ end
+ end
+
def restore(attrs={})
return false unless deleted?
last_version_attributes = if last_version
last_version.columns.each_with_object({}) do |column, hash|
unless excluded_columns.include? column