summaryrefslogtreecommitdiff |
diff options
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)}. - |