X-Git-Url: https://nos-oignons.net/gitweb/gestion-adh.git/blobdiff_plain/9abd734720ddad01338b0556ed6210bac5c5b145..9d982cb5d7f9abe598c8df3eefabe10501056110:/lib/nos_oignons/reminder_db.rb diff --git a/lib/nos_oignons/reminder_db.rb b/lib/nos_oignons/reminder_db.rb new file mode 100644 index 0000000..6052875 --- /dev/null +++ b/lib/nos_oignons/reminder_db.rb @@ -0,0 +1,52 @@ +#-*- coding: utf-8 -*- + +require 'singleton' +require 'tempfile' + +module NosOignons + class ReminderDb + DEFAULT_PATH = File.expand_path('../../../var/reminders.yaml', __FILE__) + + include Singleton + + def db_path + ENV['NOS_OIGNONS_REMINDER_DB'] || DEFAULT_PATH + end + + def initialize + reload! + end + + def reload! + # hash of email => last_reminder_date + begin + @reminders = YAML.load_file(db_path) + rescue Errno::ENOENT + @reminders = {} + end + end + + def save + # save using atomic rename + file = Tempfile.new('reminder_db', File.dirname(db_path)) + begin + file.write(YAML.dump(@reminders)) + file.close + File.rename file.path, db_path + rescue + file.unlink + raise + end + end + + def last_reminder(member) + @reminders[member.email] + end + + def record(member) + @reminders[member.email] = Time.now.to_date + # Not efficient, but let's put people's mailbox as first priority + save + end + end +end