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