SQL - повторяющиеся события календаря с исключениями - PullRequest
0 голосов
/ 10 февраля 2020

Я ищу несколько советов по лучшей практике для календаря, использующего повторяющиеся события.

Допустим, у меня есть таблица 'событие' с полями

id 
info

и другой таблица 'event_meta' с полями

id
event_id
start_date
end_date
interval

Я могу создать повторяющееся событие следующим образом

event:

id | info
---------------
 1 | some info

event_meta

id | event_Id | start_date | end_date | interval |
--------------------------------------------------
--------------------------------------------------
 1 |     1    | 2020-01-01 |2020-01-30|     7    |
--------------------------------------------------
 1 |     1    | 2020-01-03 |2020-01-30|     7    |
--------------------------------------------------
 1 |     1    | 2020-01-05 |2020-01-30|     7    |
--------------------------------------------------

Это повторяется каждую среду, пятницу и воскресенье до конца месяца.

, используя этот запрос:

SELECT * from event_meta
outer join event on event.id = event_meta.id
where (start_date - <todays date>) % interval = 0
and start_date <= <todays date>
and end_date >= <todays date>

Я могу получить все события для этого конкретного дня.

Эта система ломается, когда мне нужно предоставить исключения для определенных событий. Например, если я хочу перепланировать один экземпляр событий в шаблоне, но оставить другие без изменений, или если я хочу обновить шаблон событий, не сдвигая события, которые должны были уже произойти.

Есть ли у кого-нибудь какие-либо предложения о том, как реализовать это в этой модели или в другой модели, которая могла бы объяснить это?

...