48 lines
1.5 KiB
Erlang
48 lines
1.5 KiB
Erlang
-module(db_organization).
|
|
-export([setup/0, init/0]).
|
|
|
|
%% 1. Imposta la directory di Mnesia leggendo la variabile di ambiente
|
|
setup() ->
|
|
case os:getenv("AP_DB_DIR") of
|
|
false ->
|
|
io:format("Errore: la variabile di ambiente AP_DB_DIR non è settata!~n"),
|
|
erlang:halt(1);
|
|
Dir ->
|
|
ok = application:set_env(mnesia, dir, Dir),
|
|
ok
|
|
end.
|
|
|
|
%% 2. Crea lo schema, avvia Mnesia e crea le tabelle (solo se non esistono già)
|
|
init() ->
|
|
%% Crea lo schema solo se non esiste già
|
|
case mnesia:create_schema([node()]) of
|
|
{error, {already_exists, _}} -> ok;
|
|
_ -> ok
|
|
end,
|
|
%% Avvia Mnesia
|
|
mnesia:start(),
|
|
%% Crea tutte le tabelle
|
|
create_tables().
|
|
|
|
%% 3. Crea tutte le tabelle che servono
|
|
create_tables() ->
|
|
create_table(ap_users, [id, name, email, created_at]),
|
|
create_table(global_message, [id, activity, timestamp]).
|
|
|
|
%% Funzione helper per creare una tabella solo se non esiste già
|
|
create_table(Name, Attributes) ->
|
|
case mnesia:create_table(Name, [
|
|
{disc_only_copies, [node()]},
|
|
{attributes, Attributes}
|
|
]) of
|
|
{atomic, ok} ->
|
|
io:format("Tabella ~p creata.~n", [Name]),
|
|
ok;
|
|
{aborted, {already_exists, _}} ->
|
|
io:format("Tabella ~p già esistente.~n", [Name]),
|
|
ok;
|
|
Other ->
|
|
io:format("Errore nella creazione della tabella ~p: ~p~n", [Name, Other]),
|
|
erlang:halt(1)
|
|
end.
|