| summaryrefslogtreecommitdiff |
diff options
| -rw-r--r-- | src/ataxia_entry.erl | 23 | ||||
| -rw-r--r-- | src/ataxic.erl | 41 |
2 files changed, 48 insertions, 16 deletions
diff --git a/src/ataxia_entry.erl b/src/ataxia_entry.erl index a0a48e2..17460d9 100644 --- a/src/ataxia_entry.erl +++ b/src/ataxia_entry.erl @@ -10,7 +10,7 @@ id :: any(), read_perm :: ataxia_security:permission(), write_perm :: ataxia_security:permission(), - lock :: ataxia_security:lock(), + lock :: ataxia_lock:type(), val :: any() } ). @@ -31,12 +31,18 @@ get_read_permission/1, get_write_permission/1, get_value/1, + get_lock/1, set_read_permission/2, set_write_permission/2, set_value/2, + set_lock/2, get_id_field/0, + get_read_permission_field/0, + get_write_permission_field/0, + get_lock_field/0, + get_record_info/0, get_record_name/0 ] @@ -78,6 +84,9 @@ get_write_permission (#entry { write_perm = Result }) -> Result. -spec get_value (type()) -> any(). get_value (#entry { val = Result }) -> Result. +-spec get_lock (type()) -> any(). +get_lock (#entry { lock = Result }) -> Result. + -spec set_read_permission (ataxia_security:permission(), type()) -> type(). set_read_permission (Perm, Item) -> Item#entry{ read_perm = Perm }. @@ -87,9 +96,21 @@ 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 set_lock (ataxia_lock:type(), type()) -> type(). +set_lock (Lock, Item) -> Item#entry{ lock = Lock }. + -spec get_id_field () -> non_neg_integer(). get_id_field () -> #entry.id. +-spec get_read_permission_field () -> non_neg_integer(). +get_read_permission_field () -> #entry.read_perm. + +-spec get_write_permission_field () -> non_neg_integer(). +get_write_permission_field () -> #entry.write_perm. + +-spec get_lock_field () -> non_neg_integer(). +get_lock_field () -> #entry.lock. + get_record_info () -> record_info(fields, entry). get_record_name () -> entry. diff --git a/src/ataxic.erl b/src/ataxic.erl index 5c5698b..35291b0 100644 --- a/src/ataxic.erl +++ b/src/ataxic.erl @@ -45,6 +45,7 @@ %%%% Select -record(read_perm, {op :: basic()}). -record(write_perm, {op :: basic()}). +-record(lock, {op :: basic()}). -record(value, {op :: basic()}). -record(mseq, {ops :: list(meta())}). @@ -78,9 +79,10 @@ -export ( [ - read_permission/1, - write_permission/1, - value/1, + update_read_permission/1, + update_write_permission/1, + update_lock/1, + update_value/1, sequence_meta/1 ] ). @@ -182,17 +184,32 @@ neg (V) -> #neg{ param = V }. -spec sequence_meta (list(meta())) -> meta(). sequence_meta (List) -> #mseq{ ops = List }. --spec read_permission (basic()) -> meta(). -read_permission (OP) -> #read_perm{ op = OP }. +-spec update_read_permission (basic()) -> meta(). +update_read_permission (OP) -> #read_perm{ op = OP }. --spec write_permission (basic()) -> meta(). -write_permission (OP) -> #write_perm{ op = OP }. +-spec update_lock (basic()) -> meta(). +update_lock (OP) -> #lock{ op = OP }. --spec value (basic()) -> meta(). -value (OP) -> #value{ op = OP }. +-spec update_write_permission (basic()) -> meta(). +update_write_permission (OP) -> #write_perm{ op = OP }. + +-spec update_value (basic()) -> meta(). +update_value (OP) -> #value{ op = OP }. %%%%% APPLY TO %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -spec apply_to (meta(), ataxia_entry:type()) -> ataxia_entry:type(). +apply_to (#value{ op = OP }, Entry) -> + ataxia_entry:set_value + ( + basic_apply_to(OP, ataxia_entry:get_value(Entry)), + Entry + ); +apply_to (#lock{ op = OP }, Entry) -> + ataxia_entry:set_lock + ( + basic_apply_to(OP, ataxia_entry:get_lock(Entry)), + Entry + ); apply_to (#read_perm{ op = OP }, Entry) -> ataxia_entry:set_read_permission ( @@ -205,12 +222,6 @@ apply_to (#write_perm{ op = OP }, Entry) -> basic_apply_to(OP, ataxia_entry:get_write_permission(Entry)), Entry ); -apply_to (#value{ op = OP }, Entry) -> - ataxia_entry:set_value - ( - basic_apply_to(OP, ataxia_entry:get_value(Entry)), - Entry - ); apply_to (#mseq { ops = List }, Entry) -> lists:foldl(fun apply_to/2, Entry, List). |


