summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/db/src/storage_access.erl')
-rw-r--r--src/db/src/storage_access.erl42
1 files changed, 42 insertions, 0 deletions
diff --git a/src/db/src/storage_access.erl b/src/db/src/storage_access.erl
new file mode 100644
index 0000000..be481ee
--- /dev/null
+++ b/src/db/src/storage_access.erl
@@ -0,0 +1,42 @@
+-module(storage_access).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-record(regval, {id, owner, val}).
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+-export
+(
+ [
+ read/2,
+ insert/4,
+ update/3
+ ]
+).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+get_value([]) -> [];
+get_value([#regval{ val = Val }]) -> [Val].
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+read (DB, ID) ->
+ get_value(mnesia:read(DB, ID)).
+
+insert (DB, ID, Owner, Value) ->
+ StoredItem = #regval{ id = ID, owner = Owner, val = 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).
+
+update (DB, ID, Update) ->
+ % FIXME: handle return value, mnesia:write -> (transaction abort | ok).
+ case mnesia:read(DB, ID) of
+ [] -> error;
+ _ -> unimplemented
+ end.