NOTES for Backend ================= Why is the appointment ical renderer located in the *backend* ??? - because the backend is responsible for managing the cache and the frontend asking for the iCalendar of an appointment is quite usual - so we should cache the whole iCal Caching/Folder-Version Thoughts =============================== - TODO: locking, no rollbacks with ID-set checks - TODO: garbage collection (delete old sets and caches ...) - Update of the Version - someone asks for the version - we check a) is the version marked as dirty (known change via DAV?) b) is the timeout of the version expired ? c) do we already have a version - if neither a nor b - return current version - if a or b, fetch folder-set from the database - we compare the set with the set of the current version - stayed the same, we returned the saved version - changed, we bump the generation and save the fetched set under the new ID DEPRECATED below, we don't want to support Connector: - Evo Connector asks for all Appointments of /donald/Calendar - we look up the current Folder Version => how ?, when is it updated ?, who does this ? - if it matches, then - check whether "evofull.version" exists - if yes, => deliver - if no, sorry, why doesn't it match? - if it doesn't match or exist - fetch everything - save to evofull.version - Evo ask for all contacts in /donald/Contacts/ - prefix created extra cache file ! eg: priv-persons-a.plist