#
# リビジョン管理
# モデル用
# 別途Comm::Const::Errorをincludeしてください
#
module Comm::Module::Model::Revision
  attr_accessor :parent
  
  def register_lock(id=self.id, model_class=self.class, parent=@parent)
    return [] if parent.empty? || (parent[:table].empty? && parent[:rev].empty? && parent[:id].empty?)
    
    unless Rel.lock(parent[:table], parent[:id], model_class.name.tableize, id)
      raise RegisterFail, EMJ0011 + EMD0015
    end
  end
  
  def register_unlock(id, valid_flag=nil, model_class=self.class)
    Rel.unlock(model_class.name.tableize, id, valid_flag)
  end
  
  class RegisterFail < StandardError
  end
  
  def add_revision(param)
    param[:rev_number] ||= 0
    param[:rev_number] = param[:rev_number].to_i + 1
  end
  
  def add_revision_for_model(ar)
    ar.rev_number ||= 0
    ar.rev_number = ar.rev_number.to_i + 1
  end
end