-module(eventhub_trails). -export([admin/0, user/0, all/0]). %%%------------------------------------------------------------------- %%% @doc Возвращает список Swagger-трасс для административных эндпоинтов. %%% @end %%%------------------------------------------------------------------- -spec admin() -> [map()]. admin() -> Modules = [ % ================== БАЗОВЫЕ ================== admin_handler_health, admin_handler_stats, admin_handler_node_metrics, admin_handler_login, admin_handler_refresh, admin_handler_logout, % ================== ПОЛЬЗОВАТЕЛИ ================== admin_handler_users, admin_handler_user_by_id, admin_handler_user_verification_token, admin_handler_user_password_reset_token, admin_handler_user_stats, % ================== КАЛЕНДАРИ ================== admin_handler_calendars, admin_handler_calendar_stats, admin_handler_calendar_by_id, % ================== СОБЫТИЯ ================== admin_handler_events, admin_handler_event_stats, admin_handler_event_by_id, % ================== ОТЧЁТЫ ================== admin_handler_reports, admin_handler_report_stats, admin_handler_report_by_id, % ================== ОТЗЫВЫ ================== admin_handler_reviews, admin_handler_reviews_stats, admin_handler_reviews_by_id, % ================== БАН-СЛОВА ================== admin_handler_banned_words, % ================== АВТОМОДЕРАЦИЯ ================== admin_handler_automod, % ================== ТИКЕТЫ ================== admin_handler_ticket_stats, admin_handler_ticket_by_id, admin_handler_tickets, % ================== ПОДПИСКИ ================== admin_handler_subscriptions, admin_handler_subscription_stats, admin_handler_subscriptions_by_id, % ================== МОДЕРАЦИЯ (общий маршрут) ================== admin_handler_moderation, % ================== Управление ролями (только для superadmin) ================== admin_handler_me, admin_handler_admins, admin_handler_admins_by_id, admin_handler_audit ], lists:flatmap(fun trails_from_module/1, Modules). %%%------------------------------------------------------------------- %%% @doc Возвращает список Swagger-трасс для пользовательских эндпоинтов. %%% @end %%%------------------------------------------------------------------- -spec user() -> [map()]. user() -> Modules = [ handler_health, handler_register, handler_login, handler_refresh, handler_logout, handler_verify, handler_forgot_password, handler_reset_password, handler_booking_by_id, handler_bookings, handler_calendar_by_id, handler_calendar_follow, handler_calendar_specialists, handler_calendar_specialist_invites, handler_specialist_invites, handler_users_lookup, handler_calendar_view, handler_calendars, handler_event_by_id, handler_event_occurrences, handler_events, handler_event_waitlist, handler_reports, handler_review_by_id, handler_review_vote, handler_reviews, handler_search, handler_subscription, handler_ticket_by_id, handler_tickets, handler_user_bookings, handler_user_booking_requests, handler_user_studio_bookings, handler_user_following, handler_user_me, handler_user_avatar, handler_notification_prefs, handler_push, handler_calendar_cover, handler_media, handler_user_reviews ], lists:flatmap(fun trails_from_module/1, Modules). %%%------------------------------------------------------------------- %%% @doc Возвращает полный список Swagger-трасс (административные + пользовательские). %%% @end %%%------------------------------------------------------------------- -spec all() -> [map()]. all() -> admin() ++ user(). %%%------------------------------------------------------------------- %%% @doc Безопасно извлекает `trails/0` из модуля. %%% Если функция отсутствует, возвращает пустой список. %%% @end %%%------------------------------------------------------------------- -spec trails_from_module(atom()) -> [map()]. trails_from_module(Module) -> try Module:trails() of Trails when is_list(Trails) -> Trails catch error:undef -> [] end.