lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.3.1 vs lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.4.0

- old
+ new

@@ -31,25 +31,25 @@ required = [:master_id, :valid_from, :valid_to, :created_at, :expired_at] missing = required - version.columns raise Error, "bitemporal plugin requires the following missing column#{"s" if missing.size>1} on version class: #{missing.join(", ")}" unless missing.empty? master.instance_eval do @version_class = version - @current_version_name = "#{name ? underscore(demodulize(name)) : table_name}_current_version".to_sym + @current_version_alias_name = "#{name ? underscore(demodulize(name)) : table_name}_current_version".to_sym end master.one_to_many :versions, class: version, key: :master_id - master.one_to_one master.current_version_name, class: version, key: :master_id, :graph_block=>(proc do |j, lj, js| + master.one_to_one :current_version, class: version, key: :master_id, graph_alias_base: master.current_version_alias_name, :graph_block=>(proc do |j, lj, js| t = ::Sequel::Plugins::Bitemporal.point_in_time n = ::Sequel::Plugins::Bitemporal.now e = :expired_at.qualify(j) (:created_at.qualify(j) <= t) & ({e=>nil} | (e > t)) & (:valid_from.qualify(j) <= n) & (:valid_to.qualify(j) > n) end) do |ds| t = ::Sequel::Plugins::Bitemporal.point_in_time n = ::Sequel::Plugins::Bitemporal.now ds.where{(created_at <= t) & ({expired_at=>nil} | (expired_at > t)) & (valid_from <= n) & (valid_to > n)} end master.def_dataset_method :with_current_version do - eager_graph(model.current_version_name).where({:id.qualify(model.current_version_name) => nil}.sql_negate) + eager_graph(:current_version).where({:id.qualify(model.current_version_alias_name) => nil}.sql_negate) end master.one_to_many :current_or_future_versions, class: version, key: :master_id, :graph_block=>(proc do |j, lj, js| t = ::Sequel::Plugins::Bitemporal.point_in_time n = ::Sequel::Plugins::Bitemporal.now e = :expired_at.qualify(j) @@ -86,11 +86,11 @@ EOS end end end module ClassMethods - attr_reader :version_class, :current_version_name + attr_reader :version_class, :current_version_alias_name end module DatasetMethods end module InstanceMethods attr_reader :pending_version @@ -105,13 +105,9 @@ pending_version.errors.each do |key, key_errors| key_errors.each{|error| errors.add key, error} end if pending_version && !pending_version.valid? end - def current_version(*args) - send(self.class.current_version_name, *args) - end - def pending_or_current_version pending_version || current_version end def attributes