class Quby::Answers::Repos::DiskRepo
Attributes
path[R]
Public Class Methods
new(path)
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 15 def initialize(path) @path = Pathname.new(path).expand_path end
Public Instance Methods
find_completed_after(time, answer_ids)
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 19 def find_completed_after(time, answer_ids) records = storage.map { |filename| load_file(filename) }.select do |record| answer_ids.include?(record._id) && record.completed_at.present? && record.completed_at > time end records.map { |record| entity(record) } end
Private Instance Methods
all_records(questionnaire_key)
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 28 def all_records(questionnaire_key) storage.map { |filename| load_file(filename) } .select { |record| record.questionnaire_key == questionnaire_key } end
build_record()
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 47 def build_record Record.new(_id: SecureRandom.uuid) end
entity(record)
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 63 def entity(record) entity_class.new(**record.to_h).tap(&:enhance_by_dsl) end
find_record(id)
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 33 def find_record(id) load_file(path.join("answer-#{id}.yml")) rescue StandardError nil end
load_file(filename)
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 39 def load_file(filename) File.open(filename, 'r') do |file| record = YAML.load(file.read) record.created_at ||= File.ctime(filename) record end end
storage()
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 59 def storage Dir[path.join("*.yml")] end
store_record(record)
click to toggle source
# File lib/quby/answers/repos/disk_repo.rb, line 51 def store_record(record) filename = path.join("answer-#{record[:_id]}.yml") File.open(filename, 'w') do |file| file.write YAML.dump(record) end record.created_at ||= File.ctime(filename) end