Я работаю над лучшим способом хранения запланированных и повторяющихся событий. Я черпаю вдохновение здесь - https://github.com/bmoeskau/Extensible/blob/master/recurrence-overview.md.
Я буду хранить любые события как RRule (iCal Events - https://tools.ietf.org/html/rfc5545 ) и продолжительность события как отдельные свойства. Структура будет выглядеть следующим образом.
class Schedule {
String rRule; //Varchar
String startTime; //DateTime
String endTime; //DateTime
}
С этой структурой клиенты могут показывать события в календаре, не запрашивая API.
Интересно, когда события могут быть изменены. Например: Расписание = «Ежедневно в 10:00, продолжительность 2 часа» создает событие на каждый день. Но пользователь может изменить (отключить) любое конкретное событие. и это изменение должно быть сохранено. Для этого вышеупомянутая статья предлагает использовать EventException
(https://github.com/bmoeskau/Extensible/blob/master/recurrence-overview.md#eventexception), где хранятся измененные события.
Но в моем случае я хочу сохранить, если событие было успешно завершено , (Я могу смягчить это, сказав, что любое событие по умолчанию является успешным, если произошла какая-то модификация, я сохраняю ее в EventException
и ее нужно извлечь отсюда)
Поэтому я хотел бы получить ваше мнение, если это лучший способ сделать это? Был ли у вас подобный опыт и как он был решен. Я работаю над этим, чтобы разработать решение, которое сокращает работу как внешнего, так и внутреннего интерфейса.
Также целесообразно хранить RRule как отдельную сущность вместо строки?