48 lines
1.5 KiB
Erlang
Executable File
48 lines
1.5 KiB
Erlang
Executable File
%% @doc calendar_specialist: PK id (было calendar_id — один specialist на календарь).
|
|
%% Таблица не использовалась в API — безопасно пересоздать.
|
|
-module('20260722150000_calendar_specialist_id').
|
|
|
|
-export([up/0, down/0]).
|
|
|
|
-include("records.hrl").
|
|
|
|
up() ->
|
|
case lists:member(calendar_specialist, mnesia:system_info(tables)) of
|
|
true ->
|
|
Attrs = mnesia:table_info(calendar_specialist, attributes),
|
|
case Attrs =:= record_info(fields, calendar_specialist) of
|
|
true ->
|
|
ok;
|
|
false ->
|
|
_ = mnesia:delete_table(calendar_specialist),
|
|
create_table()
|
|
end;
|
|
false ->
|
|
create_table()
|
|
end,
|
|
ensure_index(calendar_id),
|
|
ensure_index(user_id),
|
|
ok.
|
|
|
|
down() ->
|
|
%% откат к старому layout без id не восстанавливаем данные
|
|
ok.
|
|
|
|
create_table() ->
|
|
case mnesia:create_table(calendar_specialist, [
|
|
{disc_copies, [node()]},
|
|
{attributes, record_info(fields, calendar_specialist)}
|
|
]) of
|
|
{atomic, ok} -> ok;
|
|
{aborted, {already_exists, calendar_specialist}} -> ok;
|
|
{aborted, Reason} -> error({create_table_failed, calendar_specialist, Reason})
|
|
end.
|
|
|
|
ensure_index(Attr) ->
|
|
case mnesia:add_table_index(calendar_specialist, Attr) of
|
|
{atomic, ok} -> ok;
|
|
{aborted, {already_exists, _, _}} -> ok;
|
|
{aborted, {already_exists, _}} -> ok;
|
|
{aborted, Reason} -> error({add_index_failed, calendar_specialist, Attr, Reason})
|
|
end.
|