| summaryrefslogtreecommitdiff | 
diff options
| author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-08-10 16:46:05 +0200 | 
|---|---|---|
| committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2018-08-10 16:46:05 +0200 | 
| commit | d1ab7e7cfe14f2cad9774db47f4f1dd995e5b40c (patch) | |
| tree | b4833d2114cb12b2997d33549427a204140c134c /src/shared/io/shr_database.erl | |
| parent | cbae439196de8382d5218f11e7a3afd812a5ae52 (diff) | |
Adds some progress on user registration.
Diffstat (limited to 'src/shared/io/shr_database.erl')
| -rw-r--r-- | src/shared/io/shr_database.erl | 126 | 
1 files changed, 103 insertions, 23 deletions
| diff --git a/src/shared/io/shr_database.erl b/src/shared/io/shr_database.erl index 60327a5..c1792dc 100644 --- a/src/shared/io/shr_database.erl +++ b/src/shared/io/shr_database.erl @@ -10,8 +10,11 @@  -export  (     [ -      insert/5, +      insert_at/5, +      insert/4, +      remove/3,        fetch/3, +      reserve/3,        commit/1     ]  ). @@ -19,60 +22,137 @@  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_db_node () -> node(). -get_db_node () -> list_to_atom("db_node@" ++ net_adm:localhost()). +-spec get_debug_db_node () -> node(). +get_debug_db_node () -> list_to_atom("db_node@" ++ net_adm:localhost()). --spec do_remote_operation (atom(), list(any())) -> -   ( -      {'badrpc', any()} -      | {'aborted', any()} -      | {'atomic', ({'ok', any()} | 'ok' | 'not_found')} -   ). -do_remote_operation (Op, Params) -> -   rpc:call(get_db_node(), db_access, Op, Params). +-spec get_random_db_node () -> node(). +get_random_db_node () -> +   get_debug_db_node(). + +-spec get_db_node_for (binary()) -> node(). +get_db_node_for (_ObjectID) -> +   get_debug_db_node().  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec insert +-spec insert_at     (        atom(), -      any(), +      binary(),        shr_db_user:permission(),        shr_db_user:permission(),        any()     )     -> 'ok'. -insert (DB, ObjectID, ReadPerm, WritePerm, Value) -> +insert_at (DB, ObjectID, ReadPerm, WritePerm, Value) -> +   DBNode = get_db_node_for(ObjectID), +     {atomic, _} = -      do_remote_operation(insert, [DB, ObjectID, ReadPerm, WritePerm, Value]), +      rpc:call +      ( +         DBNode, +         db_access, +         insert_at, +         [DB, ObjectID, ReadPerm, WritePerm, Value] +      ),     io:format     ( -      "~nshr_database:insert(~p) -> ok.~n", -      [{DB, ObjectID, ReadPerm, WritePerm, Value}] +      "~nshr_database:insert_at(~p) ! ~p -> ok.~n", +      [{DB, ObjectID, ReadPerm, WritePerm, Value}, DBNode]     ),     ok. +-spec insert +   ( +      atom(), +      shr_db_user:permission(), +      shr_db_user:permission(), +      any() +   ) +   -> {'ok', binary()}. +insert (DB, ReadPerm, WritePerm, Value) -> +   DBNode = get_random_db_node(), + +   {atomic, {ok, ID}} = +      rpc:call(DBNode, db_access, insert, [DB, ReadPerm, WritePerm, Value]), + +   io:format +   ( +      "~nshr_database:insert(~p) ! ~p -> ok.~n", +      [{DB, ReadPerm, WritePerm, Value}, DBNode] +   ), + +   {ok, ID}. +  -spec fetch     (        atom(), -      any(), +      binary(),        shr_db_user:user()     )     -> ({'ok', any()} | 'not_found').  fetch (DB, ObjectID, Cred) -> -   {atomic, Reply} = do_remote_operation(read, [DB, ObjectID, Cred]), +   DBNode = get_db_node_for(ObjectID), + +   {atomic, Reply} = rpc:call(DBNode, db_access, read, [DB, ObjectID, Cred]), +     io:format     ( -      "~nshr_database:fetch(~p) -> ~p.~n", -      [{DB, ObjectID, Cred}, Reply] +      "~nshr_database:fetch(~p) ! ~p -> ~p.~n", +      [{DB, ObjectID, Cred}, DBNode, Reply]     ), +     Reply.  -spec commit (shr_db_query:type()) -> 'ok'.  commit (Query) -> -   {atomic, ok} = do_remote_operation(query, [Query]), -   io:format("~nshr_database:commit(~p) -> ok.~n", [Query]), +   DBNode = get_db_node_for(shr_db_query:get_entry_id(Query)), + +   {atomic, ok} = rpc:call(DBNode, db_access, query, [Query]), + +   io:format("~nshr_database:commit(~p) ! ~p -> ok.~n", [Query, DBNode]), + +   ok. + +-spec remove +   ( +      atom(), +      binary(), +      shr_db_user:user() +   ) +   -> ('ok' | 'not_found'). +remove (DB, ObjectID, Cred) -> +   DBNode = get_db_node_for(ObjectID), + +   {atomic, _} = rpc:call(DBNode, db_access, remove, [DB, ObjectID, Cred]), + +   io:format +   ( +      "~nshr_database:remove(~p) ! ~p -> ok.~n", +      [{DB, ObjectID, Cred}, DBNode] +   ), + +   ok. + +-spec reserve +   ( +      atom(), +      binary(), +      shr_db_user:user() +   ) +   -> ('ok' | 'not_found'). +reserve (DB, ObjectID, Cred) -> +   DBNode = get_db_node_for(ObjectID), + +   {atomic, _} = rpc:call(DBNode, db_access, reserve, [DB, ObjectID, Cred]), + +   io:format +   ( +      "~nshr_database:reserve(~p) ! ~p -> ok.~n", +      [{DB, ObjectID, Cred}, DBNode] +   ), +     ok. | 


