summaryrefslogtreecommitdiff
path: root/src/db
diff options
context:
space:
mode:
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.erl114
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)}.
-