summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-12-15 19:24:00 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-12-15 19:24:00 +0100
commit446ab802ff886d7456df4ae98859842f70af9910 (patch)
tree90466a76c12806384d4df4b2865b5df15a72a41d /src/ataxia_admin.erl
parente8134a4e64a215a6f76cf24c52d4f67d3bfdcb71 (diff)
Get debug to okay the src files.
Diffstat (limited to 'src/ataxia_admin.erl')
-rw-r--r--src/ataxia_admin.erl81
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.