module Sequel::Plugins::Bitemporal::ClassMethods
Attributes
audit_class[R]
audit_updated_by_method[R]
current_version_alias[R]
excluded_columns[R]
propagate_per_column[R]
use_ranges[R]
version_class[R]
version_uses_string_nilifier[R]
versions_alias[R]
Public Instance Methods
existence_range(qualifier=nil)
click to toggle source
# File lib/sequel/plugins/bitemporal.rb, line 258 def existence_range(qualifier=nil) created_at_column = :created_at created_at_column = Sequel.qualify qualifier, created_at_column if qualifier expired_at_column = :expired_at expired_at_column = Sequel.qualify qualifier, expired_at_column if qualifier Sequel.function( :tsrange, created_at_column, expired_at_column, "[)" ).pg_range end
existence_range_contains(point_in_time, qualifier=nil)
click to toggle source
# File lib/sequel/plugins/bitemporal.rb, line 268 def existence_range_contains(point_in_time, qualifier=nil) existence_range(qualifier).contains( Sequel.cast(point_in_time, :timestamp) ) end
validity_cast_type()
click to toggle source
# File lib/sequel/plugins/bitemporal.rb, line 247 def validity_cast_type case validity_range_type when :daterange :date when :tsrange, :tstzrange :timestamp else raise "Don't know how to handle cast for range type: #{validity_range_type}" end end
validity_range(qualifier=nil)
click to toggle source
# File lib/sequel/plugins/bitemporal.rb, line 274 def validity_range(qualifier=nil) valid_from_column = :valid_from valid_from_column = Sequel.qualify qualifier, valid_from_column if qualifier valid_to_column = :valid_to valid_to_column = Sequel.qualify qualifier, valid_to_column if qualifier Sequel.function( validity_range_type, valid_from_column, valid_to_column, "[)" ).pg_range end
validity_range_contains(now, qualifier=nil)
click to toggle source
# File lib/sequel/plugins/bitemporal.rb, line 285 def validity_range_contains(now, qualifier=nil) validity_range(qualifier).contains( Sequel.cast(now, validity_cast_type) ) end
validity_range_type()
click to toggle source
# File lib/sequel/plugins/bitemporal.rb, line 224 def validity_range_type @validity_range_type ||= begin valid_from_infos = db.schema( version_class.table_name ).detect do |column_name, _| column_name==:valid_from end unless valid_from_infos raise "Could not find valid_from column in #{version_class.table_name}" end case valid_from_infos.last[:db_type] when "date" :daterange when "timestamp without time zone" :tsrange when "timestamp with time zone" :tstzrange else raise "Don't know how to handle ranges for type: #{valid_from_infos[:db_type]}" end end end