All these replies are very encouraging.
I see from Rocael that I could let the caller give the reminder service multiple calls for recurring events so that becomes a non-issue.
I see that the minmal reminder package would simply be a place to register a date and time for a message to go out, and it would be the responsibility of the caller (from another package) to maintain and update it if the time changes (cascade deletes would take care of objects that are deleted -- or should the caller be required to explicitly delete reminders?).
It seems to me that the reminder package should know the actual time of the event and the relative time(s) for the reminder(s), or provide functions interfaces to calculate this sort of thing. Otherwise, I can imagine other packages having to implement the same code over and over again (e.g. Days, Weeks, or Hours in advance).
Features I eventually would like to add are:
- be able to easily set up multiple reminders for a single event.
- confirm acknowledgement of reminders and repeat if not acknowledged within some period of time (I know some organizations where feedback if a reminder wasn't acknowledged/confirmed would be appreciated).
Finally, it sounds like much of the code to do this might be found in the project manager package. If done correctly, that code could just be moved into the reminder service and used by project manager also.