XENOS/src/db_organization.erl

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.