Description
Shilen and I are working to add enabled/disabled dates to memberships. We would like to incorporate this with the re-architecting of the membership storage in the registry (for performance reasons).
This would be three columns in the memberships table: disabled_timestamp (millis since 1970), enabled_timestamp (millis since 1970), enabled (T|F).
All queries that hit the memberships table would need to incorporate checking that the enabled flag is T
There would be a loader process which checks the dates, and would enabled or disable immediate memberships based on the timestamps.
The enabling would set the flag to T, and do everything else that a group.addMember() would do (make sure the composite memberships and virtual effective memberships are available).
The disabling would set the flag to F and do everything else that a group.deleteMember() would do (delete the composite memberships and virtual effective memberships).
Queries of memberships could make sure that the enabled membership does not have a disabled timestamp (belt and suspenders), and if so, perhaps try to recalc the memberships or throw away expired memberships from the resultset.
Note: in the future, the "enabled" flag could be used for more reasons, e.g. prerequisites (approvals or trainings etc)