| summaryrefslogtreecommitdiff | 
diff options
| author | nsensfel <SpamShield0@noot-noot.org> | 2018-06-06 16:42:42 +0200 | 
|---|---|---|
| committer | nsensfel <SpamShield0@noot-noot.org> | 2018-06-06 16:42:42 +0200 | 
| commit | 82081d45fd64294f4bc417085e06284f3487b32f (patch) | |
| tree | 1da77dd39829f8bfdcbf200df6a12a0a53edf661 /src/db | |
| parent | ee9c2ac044cc77b80f30420c8f0788cad4281084 (diff) | |
...
Diffstat (limited to 'src/db')
| -rw-r--r-- | src/db/logic/db_access.erl (renamed from src/db/logic/storage_access.erl) | 12 | ||||
| -rw-r--r-- | src/db/struct/db_query.erl | 114 | 
2 files changed, 6 insertions, 120 deletions
| diff --git a/src/db/logic/storage_access.erl b/src/db/logic/db_access.erl index 437294f..f589ba8 100644 --- a/src/db/logic/storage_access.erl +++ b/src/db/logic/db_access.erl @@ -1,4 +1,4 @@ --module(storage_access). +-module(db_access).  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -19,23 +19,23 @@  %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  get_value ([]) -> not_found; -get_value ([Regval]) -> {ok, db_item:get_value(Regval)}. +get_value ([Regval]) -> {ok, sh_db_item:get_value(Regval)}.  read_transaction (DB, ID) ->     get_value(mnesia:read(DB, ID)).  insert_transaction (DB, ID, Perm, Value) -> -   StoredItem = db_item:new(ID, Perm, Value), +   StoredItem = sh_db_item:new(ID, Perm, Value),     % FIXME: handle return value, mnesia:write -> (transaction abort | ok).     % FIXME: is this an atomic OP? Is the lock freed afterwards?     mnesia:write(DB, StoredItem, sticky_write),     ok.  query_transaction (Query) -> -   DB = db_query:get_database(Query), -   ID = db_query:get_entry_id(Query), +   DB = sh_db_query:get_database(Query), +   ID = sh_db_query:get_entry_id(Query),     [Item] = mnesia:read(DB, ID), -   {ok, UpdatedItem} = db_query:apply_to(Query, Item), +   {ok, UpdatedItem} = sh_db_query:apply_to(Query, Item),     % FIXME: handle return value, mnesia:write -> (transaction abort | ok).     % FIXME: is this an atomic OP? Is the lock freed afterwards?     mnesia:write(DB, UpdatedItem, sticky_write), diff --git a/src/db/struct/db_query.erl b/src/db/struct/db_query.erl deleted file mode 100644 index 9a86f98..0000000 --- a/src/db/struct/db_query.erl +++ /dev/null @@ -1,114 +0,0 @@ --module(db_query). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --include("../../shared/include/db_query.hrl"). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --export -( -   [ -      get_database/1, -      get_entry_id/1 -   ] -). --export([apply_to/2]). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec get_user (db_query()) -> sh_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 (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(), -      db_item:type() -   ) -   -> db_item:type(). -apply_master_op_to (MOp, Elem) when is_record(MOp, set_perm) -> -   NewPerm = MOp#set_perm.perm, - -   db_item:set_perm(NewPerm, Elem); -apply_master_op_to (MOp, Elem) when is_record(MOp, set_val) -> -   NewVal = MOp#set_val.val, - -   db_item:set_value(NewVal, Elem); -apply_master_op_to (MOp, Elem) -> -   OldValue = sh_db_item:get_value(Elem), -   NewValue = apply_op_to(MOp, OldValue), - -   db_item:set_value(NewValue, Elem). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --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(), -      db_item:type() -   ) -   -> ({'ok', db_item:type()} | 'error'). -apply_to (DBQuery, DBItem) -> -   true = -      sh_db_user:can_access -      ( -         sh_db_item:get_permission(DBItem), -         get_user(DBQuery) -      ), -   MOps = DBQuery#db_query.ops, -   {ok, lists:foldl(fun apply_master_op_to/2, DBItem, MOps)}. - | 


