Module: Sequel::Plugins::Bitemporal::ClassMethods
- Defined in:
- lib/sequel/plugins/bitemporal.rb
Instance Attribute Summary collapse
-
#audit_class ⇒ Object
readonly
Returns the value of attribute audit_class.
-
#audit_updated_by_method ⇒ Object
readonly
Returns the value of attribute audit_updated_by_method.
-
#current_version_alias ⇒ Object
readonly
Returns the value of attribute current_version_alias.
-
#excluded_columns ⇒ Object
readonly
Returns the value of attribute excluded_columns.
-
#propagate_per_column ⇒ Object
readonly
Returns the value of attribute propagate_per_column.
-
#use_ranges ⇒ Object
readonly
Returns the value of attribute use_ranges.
-
#version_class ⇒ Object
readonly
Returns the value of attribute version_class.
-
#version_uses_string_nilifier ⇒ Object
readonly
Returns the value of attribute version_uses_string_nilifier.
-
#versions_alias ⇒ Object
readonly
Returns the value of attribute versions_alias.
Instance Method Summary collapse
- #existence_range(qualifier = nil) ⇒ Object
- #existence_range_contains(point_in_time, qualifier = nil) ⇒ Object
- #validity_cast_type ⇒ Object
- #validity_range(qualifier = nil) ⇒ Object
- #validity_range_contains(now, qualifier = nil) ⇒ Object
- #validity_range_type ⇒ Object
Instance Attribute Details
#audit_class ⇒ Object (readonly)
Returns the value of attribute audit_class.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def audit_class @audit_class end |
#audit_updated_by_method ⇒ Object (readonly)
Returns the value of attribute audit_updated_by_method.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def audit_updated_by_method @audit_updated_by_method end |
#current_version_alias ⇒ Object (readonly)
Returns the value of attribute current_version_alias.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def current_version_alias @current_version_alias end |
#excluded_columns ⇒ Object (readonly)
Returns the value of attribute excluded_columns.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def excluded_columns @excluded_columns end |
#propagate_per_column ⇒ Object (readonly)
Returns the value of attribute propagate_per_column.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def propagate_per_column @propagate_per_column end |
#use_ranges ⇒ Object (readonly)
Returns the value of attribute use_ranges.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def use_ranges @use_ranges end |
#version_class ⇒ Object (readonly)
Returns the value of attribute version_class.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def version_class @version_class end |
#version_uses_string_nilifier ⇒ Object (readonly)
Returns the value of attribute version_uses_string_nilifier.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def version_uses_string_nilifier @version_uses_string_nilifier end |
#versions_alias ⇒ Object (readonly)
Returns the value of attribute versions_alias.
194 195 196 |
# File 'lib/sequel/plugins/bitemporal.rb', line 194 def versions_alias @versions_alias end |
Instance Method Details
#existence_range(qualifier = nil) ⇒ Object
232 233 234 235 236 237 238 239 240 |
# File 'lib/sequel/plugins/bitemporal.rb', line 232 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) ⇒ Object
242 243 244 245 246 |
# File 'lib/sequel/plugins/bitemporal.rb', line 242 def existence_range_contains(point_in_time, qualifier=nil) existence_range(qualifier).contains( Sequel.cast(point_in_time, :timestamp) ) end |
#validity_cast_type ⇒ Object
221 222 223 224 225 226 227 228 229 230 |
# File 'lib/sequel/plugins/bitemporal.rb', line 221 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) ⇒ Object
248 249 250 251 252 253 254 255 256 257 |
# File 'lib/sequel/plugins/bitemporal.rb', line 248 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) ⇒ Object
259 260 261 262 263 |
# File 'lib/sequel/plugins/bitemporal.rb', line 259 def validity_range_contains(now, qualifier=nil) validity_range(qualifier).contains( Sequel.cast(now, validity_cast_type) ) end |
#validity_range_type ⇒ Object
198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/sequel/plugins/bitemporal.rb', line 198 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 |