class Quby::Answers::Repos::MongoidRepo

Public Instance Methods

find_completed_after(time, answer_ids) click to toggle source
# File lib/quby/answer_repos/mongoid_repo.rb, line 48
def find_completed_after(time, answer_ids)
  records = Record.any_in(_id: answer_ids).where(:completed_at.gt => time)
  records.map { |record| entity(record) }
end
update!(answer) click to toggle source
# File lib/quby/answer_repos/mongoid_repo.rb, line 53
def update!(answer)
  record = find_record(answer.id)
  # MongoDB won't save new hash order if we don't clear it first.
  record.update_attributes!(scores: {}, actions: {}, completion: {})
  update_attributes(record, answer)
  store_record(record)
end

Private Instance Methods

all_records(questionnaire_key) click to toggle source
# File lib/quby/answer_repos/mongoid_repo.rb, line 63
def all_records(questionnaire_key)
  Record.where(questionnaire_key: questionnaire_key).all.to_a
end
build_record() click to toggle source
# File lib/quby/answer_repos/mongoid_repo.rb, line 73
def build_record
  Record.new
end
entity(record) click to toggle source
# File lib/quby/answer_repos/mongoid_repo.rb, line 81
def entity(record)
  entity_class.new(record.attributes).tap(&:enhance_by_dsl)
end
find_record(id) click to toggle source
# File lib/quby/answer_repos/mongoid_repo.rb, line 67
def find_record(id)
  Record.find(id)
rescue ::Mongoid::Errors::DocumentNotFound, ::Mongoid::Errors::InvalidFind
  raise AnswerNotFound, "Answer #{id.inspect} could not be found."
end
store_record(record) click to toggle source
# File lib/quby/answer_repos/mongoid_repo.rb, line 77
def store_record(record)
  record.save!
end