feat(waitlist): optional event waitlist with FIFO promote.
CI / test (push) Successful in 7m12s
CI / deploy-ift (push) Successful in 2m44s
CI / e2e-ift (push) Successful in 1m28s
CI / deploy-stage (push) Successful in 2m3s
CI / e2e-stage (push) Successful in 1m24s

Commercial calendars opt in via settings.waitlist_enabled; join when full;
auto-promote on cancel/decline/expire with email and in-app notify.

Refs EventHub/EventHubBack#72
This commit is contained in:
2026-08-14 21:44:42 +03:00
parent 29111cd514
commit fb8869fa86
15 changed files with 730 additions and 9 deletions
+3
View File
@@ -87,6 +87,7 @@ ensure_indexes(Tables) when is_list(Tables) ->
{event, [calendar_id, title, created_at, start_time, event_type,
master_id, specialist_id, status]},
{booking, [event_id, user_id, status]},
{waitlist_entry, [event_id, user_id, status]},
{review_vote, [review_id, user_id]},
{calendar, [owner_id, status, short_name, category]},
{calendar_specialist, [calendar_id, user_id]},
@@ -156,6 +157,8 @@ table_opts(recurrence_exception) ->
[{ram_copies, [node()]}, {type, bag}, {attributes, record_info(fields, recurrence_exception)}];
table_opts(booking) ->
[{ram_copies, [node()]}, {attributes, record_info(fields, booking)}];
table_opts(waitlist_entry) ->
[{ram_copies, [node()]}, {attributes, record_info(fields, waitlist_entry)}];
table_opts(review) ->
[{ram_copies, [node()]}, {attributes, record_info(fields, review)}];
table_opts(review_vote) ->