--- /dev/null
+#-*- 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