Рефакторинг обработчиков. Часть 1 #21

This commit is contained in:
2026-05-10 22:14:38 +03:00
parent a35d6f7acc
commit 6403f061df
46 changed files with 3082 additions and 2091 deletions
+25
View File
@@ -0,0 +1,25 @@
%%%-------------------------------------------------------------------
%%% @doc Общие инфраструктурные утилиты.
%%% Содержит функцию генерации уникальных идентификаторов,
%%% используемых во всех основных сущностях (пользователи,
%%% администраторы, события и т.д.).
%%% @end
%%%-------------------------------------------------------------------
-module(infra_utils).
-export([generate_id/1]).
%%%===================================================================
%%% API
%%%===================================================================
%% @doc Генерирует уникальный идентификатор.
%% Формат: URL-безопасный base64 от n случайных байт,
%% без завершающих символов '='.
%% Длина строки: 22 символа.
%% Пример: <<"WyrF9DQm3YTksEJww4lyrQ">>
-spec generate_id(non_neg_integer()) -> binary().
generate_id(Bytes) ->
Base64 = base64:encode(crypto:strong_rand_bytes(Bytes), #{mode => urlsafe, padding => false}),
Id = binary:replace(Base64, <<"-">>, <<"0">>, [global]),
binary:replace(Id, <<"_">>, <<"9">>, [global]).