| summaryrefslogtreecommitdiff |
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-12-15 19:24:00 +0100 |
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-12-15 19:24:00 +0100 |
| commit | 446ab802ff886d7456df4ae98859842f70af9910 (patch) | |
| tree | 90466a76c12806384d4df4b2865b5df15a72a41d /src/ataxia_admin.erl | |
| parent | e8134a4e64a215a6f76cf24c52d4f67d3bfdcb71 (diff) | |
Get debug to okay the src files.
Diffstat (limited to 'src/ataxia_admin.erl')
| -rw-r--r-- | src/ataxia_admin.erl | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/src/ataxia_admin.erl b/src/ataxia_admin.erl new file mode 100644 index 0000000..c6eb9be --- /dev/null +++ b/src/ataxia_admin.erl @@ -0,0 +1,81 @@ +-module(ataxia_admin). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +-record +( + db_model, + { + store_file :: string(), + neighbors :: list(node()) + } +). + +-type type() :: #db_model{}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-export_type([type/0]). + +-export +( + [ + new/2, + add_db/2, + start/1 + ] +). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec new (string(), list(node())) -> type(). +new (StorageFile, Neighbors) -> + #db_model + { + store_file = StorageFile, + neighbors = Neighbors + }. + +-spec start (type()) -> 'ok'. +start (Model) -> + StorageFile = Model#db_model.store_file, + Neighbors = Model#db_model.neighbors, + + ok = application:set_env(mnesia, dir, StorageFile), + + case mnesia:create_schema([node()|Neighbors]) of + {error, {Name, {already_exists, Name}}} -> ok; + ok -> ok + end, + + ok = mnesia:start(), + + ok. + +-spec add_db (atom(), type()) -> 'ok'. +add_db (DBName, Model) -> + Neighbors = Model#db_model.neighbors, + + mnesia:create_table + ( + DBName, + [ + {record_name, ataxia_entry:get_record_name()}, + {attributes, ataxia_entry:get_record_info()}, + {disc_copies, [node()|Neighbors]}, + {disc_only_copies, []}, + {ram_copies, []}, + {type, ordered_set}, + {local_content, false} + ] + ), + + ok. |


