From 7ff80825a16b91ef2c0374776f0d140068153d0b Mon Sep 17 00:00:00 2001 From: nsensfel Date: Wed, 12 Dec 2018 16:57:44 +0100 Subject: Moving TO's DB system to its own repository. --- src/ataxia_entry.erl | 96 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/ataxia_entry.erl (limited to 'src/ataxia_entry.erl') diff --git a/src/ataxia_entry.erl b/src/ataxia_entry.erl new file mode 100644 index 0000000..a0a48e2 --- /dev/null +++ b/src/ataxia_entry.erl @@ -0,0 +1,96 @@ +-module(ataxia_entry). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% TYPES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-record +( + entry, + { + id :: any(), + read_perm :: ataxia_security:permission(), + write_perm :: ataxia_security:permission(), + lock :: ataxia_security:lock(), + val :: any() + } +). + +-type type() :: #entry{}. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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(), + ataxia_security:permission(), + ataxia_security:permission(), + any() + ) -> type(). +new (ID, ReadPermission, WritePermission, Value) -> + #entry + { + id = ID, + read_perm = ReadPermission, + write_perm = WritePermission, + lock = ataxia_security:unlocked(), + val = Value + }. + +-spec get_id (type()) -> any(). +get_id (#entry { id = Result }) -> Result. + +-spec get_read_permission (type()) -> ataxia_security:permission(). +get_read_permission (#entry { read_perm = Result }) -> Result. + +-spec get_write_permission (type()) -> ataxia_security:permission(). +get_write_permission (#entry { write_perm = Result }) -> Result. + +-spec get_value (type()) -> any(). +get_value (#entry { val = Result }) -> Result. + +-spec set_read_permission (ataxia_security:permission(), type()) -> type(). +set_read_permission (Perm, Item) -> Item#entry{ read_perm = Perm }. + +-spec set_write_permission (ataxia_security:permission(), type()) -> type(). +set_write_permission (Perm, Item) -> Item#entry{ write_perm = Perm }. + +-spec set_value (any(), type()) -> type(). +set_value (Value, Item) -> Item#entry{ val = Value }. + +-spec get_id_field () -> non_neg_integer(). +get_id_field () -> #entry.id. + +get_record_info () -> record_info(fields, entry). + +get_record_name () -> entry. + -- cgit v1.2.3-70-g09d2