summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-12-15 19:22:30 +0100
committerNathanael Sensfelder <SpamShield0@MultiAgentSystems.org>2018-12-15 19:22:30 +0100
commitd50ae4d7700c4cb083e907b3d3e4ee67b92a6459 (patch)
tree1a19779b083002f6e9a29f33b8f7ffdb06fa855e /src/shared
parent2c3aa52b642858b85ba756df927ff5730f5ee73d (diff)
Get debug to okay the src files.
Diffstat (limited to 'src/shared')
-rw-r--r--src/shared/io/shr_database.erl158
-rw-r--r--src/shared/io/shr_timed_cache.erl2
-rw-r--r--src/shared/shr_janitor.erl2
-rw-r--r--src/shared/struct/shr_db_item.erl96
-rw-r--r--src/shared/struct/shr_db_query.erl241
-rw-r--r--src/shared/struct/shr_db_user.erl39
6 files changed, 2 insertions, 536 deletions
diff --git a/src/shared/io/shr_database.erl b/src/shared/io/shr_database.erl
deleted file mode 100644
index c1792dc..0000000
--- a/src/shared/io/shr_database.erl
+++ /dev/null
@@ -1,158 +0,0 @@
--module(shr_database).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--export
-(
- [
- insert_at/5,
- insert/4,
- remove/3,
- fetch/3,
- reserve/3,
- commit/1
- ]
-).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec get_debug_db_node () -> node().
-get_debug_db_node () -> list_to_atom("db_node@" ++ net_adm:localhost()).
-
--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_at
- (
- atom(),
- binary(),
- shr_db_user:permission(),
- shr_db_user:permission(),
- any()
- )
- -> 'ok'.
-insert_at (DB, ObjectID, ReadPerm, WritePerm, Value) ->
- DBNode = get_db_node_for(ObjectID),
-
- {atomic, _} =
- rpc:call
- (
- DBNode,
- db_access,
- insert_at,
- [DB, ObjectID, ReadPerm, WritePerm, Value]
- ),
-
- io:format
- (
- "~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(),
- binary(),
- shr_db_user:user()
- )
- -> ({'ok', any()} | 'not_found').
-fetch (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 -> ~p.~n",
- [{DB, ObjectID, Cred}, DBNode, Reply]
- ),
-
- Reply.
-
--spec commit (shr_db_query:type()) -> 'ok'.
-commit (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.
diff --git a/src/shared/io/shr_timed_cache.erl b/src/shared/io/shr_timed_cache.erl
index de3d094..ff6e13d 100644
--- a/src/shared/io/shr_timed_cache.erl
+++ b/src/shared/io/shr_timed_cache.erl
@@ -38,7 +38,7 @@
-spec add_to_cache (atom(), any(), any()) -> any().
add_to_cache (DB, Owner, ObjectID) ->
{ok, TimerPID} = gen_server:start(?MODULE, {DB, {Owner, ObjectID}}, []),
- {ok, Data} = shr_database:fetch(DB, ObjectID, Owner),
+ {ok, Data} = ataxia_client:fetch(DB, Owner, ObjectID),
ets:insert(DB, {{Owner, ObjectID}, TimerPID, Data}),
Data.
diff --git a/src/shared/shr_janitor.erl b/src/shared/shr_janitor.erl
index 097a729..05df18a 100644
--- a/src/shared/shr_janitor.erl
+++ b/src/shared/shr_janitor.erl
@@ -22,7 +22,7 @@ core (DB, ItemID) ->
receive
after
60000 ->
- shr_database:remove(DB, ItemID, janitor)
+ ataxia_client:remove(DB, ataxia_security:janitor(), ItemID)
end.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/src/shared/struct/shr_db_item.erl b/src/shared/struct/shr_db_item.erl
deleted file mode 100644
index 417e772..0000000
--- a/src/shared/struct/shr_db_item.erl
+++ /dev/null
@@ -1,96 +0,0 @@
--module(shr_db_item).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--record
-(
- db_item,
- {
- id :: any(),
- read_perm :: shr_db_user:permission(),
- write_perm :: shr_db_user:permission(),
- val :: any()
- }
-).
-
--type db_item() :: #db_item{}.
-
--type type() :: db_item().
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--export_type([type/0]).
-
--export
-(
- [
- new/4,
-
- get_id/1,
- get_read_permission/1,
- get_write_permission/1,
- get_value/1,
-
- set_read_permission/2,
- set_write_permission/2,
- set_value/2,
-
- get_id_field/0,
- get_record_info/0,
- get_record_name/0
- ]
-).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec new
- (
- any(),
- shr_db_user:permission(),
- shr_db_user:permission(),
- any()
- ) -> type().
-new (ID, ReadPermission, WritePermission, Value) ->
- #db_item
- {
- id = ID,
- read_perm = ReadPermission,
- write_perm = WritePermission,
- val = Value
- }.
-
--spec get_id (type()) -> any().
-get_id (#db_item { id = Result }) -> Result.
-
--spec get_read_permission (type()) -> shr_db_user:permission().
-get_read_permission (#db_item { read_perm = Result }) -> Result.
-
--spec get_write_permission (type()) -> shr_db_user:permission().
-get_write_permission (#db_item { write_perm = Result }) -> Result.
-
--spec get_value (type()) -> any().
-get_value (#db_item { val = Result }) -> Result.
-
--spec set_read_permission (shr_db_user:permission(), type()) -> type().
-set_read_permission (Perm, Item) -> Item#db_item{ read_perm = Perm }.
-
--spec set_write_permission (shr_db_user:permission(), type()) -> type().
-set_write_permission (Perm, Item) -> Item#db_item{ write_perm = Perm }.
-
--spec set_value (any(), type()) -> type().
-set_value (Value, Item) -> Item#db_item{ val = Value }.
-
--spec get_id_field () -> non_neg_integer().
-get_id_field () -> #db_item.id.
-
-get_record_info () -> record_info(fields, db_item).
-
-get_record_name () -> db_item.
-
diff --git a/src/shared/struct/shr_db_query.erl b/src/shared/struct/shr_db_query.erl
deleted file mode 100644
index af8b080..0000000
--- a/src/shared/struct/shr_db_query.erl
+++ /dev/null
@@ -1,241 +0,0 @@
--module(shr_db_query).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--record
-(
- set_field,
- {
- field :: non_neg_integer(),
- value :: any()
- }
-).
-
--record
-(
- add_to_field,
- {
- field :: non_neg_integer(),
- values :: list(any()),
- head :: boolean()
- }
-).
-
--record
-(
- update_indexed,
- {
- field :: non_neg_integer(),
- ix :: non_neg_integer(),
- ops :: list(db_query_op())
- }
-).
-
--record
-(
- set_read_perm,
- {
- perm :: shr_db_user:permission()
- }
-).
-
--record
-(
- set_write_perm,
- {
- perm :: shr_db_user:permission()
- }
-).
-
--record
-(
- set_val,
- {
- val :: any()
- }
-).
-
--record
-(
- db_query,
- {
- db :: atom(),
- id :: any(),
- user :: shr_db_user:user(),
- ops :: list(db_query_master_op())
- }
-).
-
--type db_query_op() ::
- (#set_field{} | #add_to_field{} | #update_indexed{} | #set_val{}).
--type db_query_master_op() ::
- (db_query_op() | #set_read_perm{} | #set_write_perm{}).
-
--type db_query() :: #db_query{}.
-
--type op() :: db_query_master_op().
--type type() :: db_query().
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--export_type([type/0, op/0]).
-
--export
-(
- [
- new/4,
- set_field/2,
- add_to_field/3,
- update_indexed/3,
- set_value/1,
- set_read_permission/1,
- set_write_permission/1
- ]
-).
--export
-(
- [
- get_database/1,
- get_entry_id/1
- ]
-).
--export([apply_to/2]).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec get_user (db_query()) -> shr_db_user:user().
-get_user (#db_query{ user = Result }) -> Result.
-
--spec apply_update_indexed (#update_indexed{}, any()) -> any().
-apply_update_indexed (Op, Elem) ->
- FieldNumber = Op#update_indexed.field,
- IX = Op#update_indexed.ix,
- Ops = Op#update_indexed.ops,
-
- IndexedFieldValue = element(FieldNumber, Elem),
- ArrayValue = array:get(IX, IndexedFieldValue),
- UpdatedArrayValue = lists:foldl(fun apply_op_to/2, ArrayValue, Ops),
- UpdatedIndexedFieldValue =
- array:set(IX, UpdatedArrayValue, IndexedFieldValue),
-
- setelement(FieldNumber, Elem, UpdatedIndexedFieldValue).
-
--spec apply_add_to_field (#add_to_field{}, any()) -> any().
-apply_add_to_field (Op, Elem) ->
- FieldNumber = Op#add_to_field.field,
- NewValues = Op#add_to_field.values,
- AddToHead = Op#add_to_field.head,
-
- CurrentValues = element(FieldNumber, Elem),
- UpdatedValues =
- case AddToHead of
- true -> (NewValues ++ CurrentValues);
- _ -> (CurrentValues ++ NewValues)
- end,
-
- setelement(FieldNumber, Elem, UpdatedValues).
-
--spec apply_set_field (#set_field{}, any()) -> any().
-apply_set_field (Op, Elem) ->
- FieldNumber = Op#set_field.field,
- NewValue = Op#set_field.value,
-
- setelement(FieldNumber, Elem, NewValue).
-
--spec apply_op_to (db_query_op(), any()) -> any().
-apply_op_to (Op, Elem) when is_record(Op, set_field) ->
- apply_set_field(Op, Elem);
-apply_op_to (MOp, _Elem) when is_record(MOp, set_val) ->
- NewVal = MOp#set_val.val,
- NewVal;
-apply_op_to (Op, Elem) when is_record(Op, add_to_field) ->
- apply_add_to_field(Op, Elem);
-apply_op_to (Op, Elem) when is_record(Op, update_indexed) ->
- apply_update_indexed(Op, Elem).
-
--spec apply_master_op_to
- (
- db_query_master_op(),
- shr_db_item:type()
- )
- -> shr_db_item:type().
-apply_master_op_to (MOp, Elem) when is_record(MOp, set_read_perm) ->
- NewPerm = MOp#set_read_perm.perm,
-
- shr_db_item:set_read_permission(NewPerm, Elem);
-apply_master_op_to (MOp, Elem) when is_record(MOp, set_write_perm) ->
- NewPerm = MOp#set_write_perm.perm,
-
- shr_db_item:set_write_permission(NewPerm, Elem);
-apply_master_op_to (MOp, Elem) ->
- OldValue = shr_db_item:get_value(Elem),
- NewValue = apply_op_to(MOp, OldValue),
-
- shr_db_item:set_value(NewValue, Elem).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec new (atom(), any(), shr_db_user:user(), list(op())) -> type().
-new (DBName, ObjectID, User, Ops) ->
- #db_query
- {
- db = DBName,
- id = ObjectID,
- user = User,
- ops = Ops
- }.
-
--spec set_field (non_neg_integer(), any()) -> op().
-set_field (Field, Value) ->
- #set_field { field = Field, value = Value }.
-
--spec set_value (any()) -> op().
-set_value (Value) -> #set_val { val= Value }.
-
--spec set_read_permission (shr_db_user:permission()) -> op().
-set_read_permission (Perm) -> #set_read_perm { perm = Perm }.
-
--spec set_write_permission (shr_db_user:permission()) -> op().
-set_write_permission (Perm) -> #set_write_perm { perm = Perm }.
-
--spec add_to_field (non_neg_integer(), list(any()), boolean()) -> op().
-add_to_field (Field, Values, IsPrefix) ->
- #add_to_field { field = Field, values = Values, head = IsPrefix}.
-
--spec update_indexed
- (
- non_neg_integer(),
- non_neg_integer(),
- list(op())
- )
- -> op().
-update_indexed (Field, IX, Updates) ->
- #update_indexed { field = Field, ix = IX, ops = Updates}.
-
--spec get_database (db_query()) -> atom().
-get_database (#db_query{ db = Result }) -> Result.
-
--spec get_entry_id (db_query()) -> any().
-get_entry_id (#db_query{ id = Result }) -> Result.
-
--spec apply_to
- (
- db_query(),
- shr_db_item:type()
- )
- -> ({'ok', shr_db_item:type()} | 'error').
-apply_to (DBQuery, DBItem) ->
- ObjectWPerm = shr_db_item:get_write_permission(DBItem),
- User = get_user(DBQuery),
-
- io:format("~p accessing obj with ~p perm.~n", [User, ObjectWPerm]),
-
- true = shr_db_user:can_access (ObjectWPerm, User),
-
- MOps = DBQuery#db_query.ops,
- {ok, lists:foldl(fun apply_master_op_to/2, DBItem, MOps)}.
-
diff --git a/src/shared/struct/shr_db_user.erl b/src/shared/struct/shr_db_user.erl
deleted file mode 100644
index dcd8685..0000000
--- a/src/shared/struct/shr_db_user.erl
+++ /dev/null
@@ -1,39 +0,0 @@
--module(shr_db_user).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--type db_named_user() :: {'user', any()}.
--type db_user() :: (db_named_user() | 'admin' | 'any' | 'janitor').
--type db_permission() :: (list(db_named_user()) | 'any' | 'janitor').
-
-
--type user() :: db_user().
--type permission() :: db_permission().
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--export_type([user/0, permission/0]).
-
--export([can_access/2, player/1]).
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
--spec player (shr_player:id()) -> db_user().
-player (ID) -> {user, ID}.
-
--spec can_access (permission(), user()) -> boolean().
-can_access (_, admin) -> true;
-can_access (any, _) -> true;
-can_access (janitor, janitor) -> true;
-can_access (List, {user, User}) ->
- lists:member({user, User}, List);
-can_access (List, janitor) ->
- lists:member(janitor, List);
-can_access (List, User) ->
- can_access(List, {user, User}).