Date-range filtering for recurrences
Closed, ResolvedPublic


For recurrences to work we have to index all occurreces we want to match. This is in conflict of the filtering of dtstart/dtend that we currently do.

The best solution, IMO would be to have a new "daterange" property that stores not only start and end but all periods. This can be from a single point in time to a list of periods. We then base the index and query on that, and thus we can accurately do the querying and filtering.

The tradeoffs are:

  • We use extra space to store the daterange (shouldn't be a problem)
  • Parsing and filtering the daterange could be relatively expensive. If we generate the daterange for an endlessly recurring event for e.g. 10 years,

we quickly end up with 100's of ranges.

For the time being we just disable filtering by range, so we only have the index on initial query, and no filtering subsequently.

cmollekopf triaged this task as Normal priority.

An alternative approach would be to redefine dtstart as the end date of the overall recurrence.

We could still potentially index the actual periods more accurately, but filtering would ignore anything in between.

This would be less ideal, but could otherwise work well too.

for display purposes dtstart and dtend are useless anyways with recurrences.

For the time being we're using the approach that sets dtend to the recurrence end (calculated for 10 years).
This seems to work well enough for the time being.

cmollekopf moved this task from Backlog to 0.8 on the Kube board.Aug 28 2018, 4:02 PM
cmollekopf edited projects, added Kube (0.8); removed Kube.
cmollekopf moved this task from Backlog to Done on the Kube (0.8) board.Aug 28 2018, 7:59 PM
cmollekopf closed this task as Resolved.Jan 5 2019, 7:57 PM
cmollekopf claimed this task.