-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.