summaryrefslogtreecommitdiff |
diff options
Diffstat (limited to 'src/shared/struct')
-rw-r--r-- | src/shared/struct/shr_db_item.erl | 38 | ||||
-rw-r--r-- | src/shared/struct/shr_db_query.erl | 26 |
2 files changed, 47 insertions, 17 deletions
diff --git a/src/shared/struct/shr_db_item.erl b/src/shared/struct/shr_db_item.erl index 546462e..417e772 100644 --- a/src/shared/struct/shr_db_item.erl +++ b/src/shared/struct/shr_db_item.erl @@ -8,7 +8,8 @@ db_item, { id :: any(), - perm :: shr_db_user:permission(), + read_perm :: shr_db_user:permission(), + write_perm :: shr_db_user:permission(), val :: any() } ). @@ -25,13 +26,15 @@ -export ( [ - new/3, + new/4, get_id/1, - get_permission/1, + get_read_permission/1, + get_write_permission/1, get_value/1, - set_permission/2, + set_read_permission/2, + set_write_permission/2, set_value/2, get_id_field/0, @@ -47,26 +50,39 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% --spec new (any(), shr_db_user:permission(), any()) -> type(). -new (ID, Permission, Value) -> +-spec new + ( + any(), + shr_db_user:permission(), + shr_db_user:permission(), + any() + ) -> type(). +new (ID, ReadPermission, WritePermission, Value) -> #db_item { id = ID, - perm = Permission, + read_perm = ReadPermission, + write_perm = WritePermission, val = Value }. -spec get_id (type()) -> any(). get_id (#db_item { id = Result }) -> Result. --spec get_permission (type()) -> shr_db_user:permission(). -get_permission (#db_item { perm = Result }) -> Result. +-spec get_read_permission (type()) -> shr_db_user:permission(). +get_read_permission (#db_item { read_perm = Result }) -> Result. + +-spec get_write_permission (type()) -> shr_db_user:permission(). +get_write_permission (#db_item { write_perm = Result }) -> Result. -spec get_value (type()) -> any(). get_value (#db_item { val = Result }) -> Result. --spec set_permission (shr_db_user:permission(), type()) -> type(). -set_permission (Perm, Item) -> Item#db_item{ perm = Perm }. +-spec set_read_permission (shr_db_user:permission(), type()) -> type(). +set_read_permission (Perm, Item) -> Item#db_item{ read_perm = Perm }. + +-spec set_write_permission (shr_db_user:permission(), type()) -> type(). +set_write_permission (Perm, Item) -> Item#db_item{ write_perm = Perm }. -spec set_value (any(), type()) -> type(). set_value (Value, Item) -> Item#db_item{ val = Value }. diff --git a/src/shared/struct/shr_db_query.erl b/src/shared/struct/shr_db_query.erl index 284cc2c..e1f6156 100644 --- a/src/shared/struct/shr_db_query.erl +++ b/src/shared/struct/shr_db_query.erl @@ -34,7 +34,15 @@ -record ( - set_perm, + set_read_perm, + { + perm :: shr_db_user:permission() + } +). + +-record +( + set_write_perm, { perm :: shr_db_user:permission() } @@ -60,7 +68,9 @@ ). -type db_query_op() :: (#set_field{} | #add_to_field{} | #update_indexed{}). --type db_query_master_op() :: (db_query_op() | #set_perm{} | #set_val{}). +-type db_query_master_op() :: + (db_query_op() | #set_read_perm{} | #set_write_perm{} | #set_val{}). + -type db_query() :: #db_query{}. -opaque op() :: db_query_op(). @@ -145,10 +155,14 @@ apply_op_to (Op, Elem) when is_record(Op, update_indexed) -> shr_db_item:type() ) -> shr_db_item:type(). -apply_master_op_to (MOp, Elem) when is_record(MOp, set_perm) -> - NewPerm = MOp#set_perm.perm, +apply_master_op_to (MOp, Elem) when is_record(MOp, set_read_perm) -> + NewPerm = MOp#set_read_perm.perm, + + shr_db_item:set_read_permission(NewPerm, Elem); +apply_master_op_to (MOp, Elem) when is_record(MOp, set_write_perm) -> + NewPerm = MOp#set_write_perm.perm, - shr_db_item:set_permission(NewPerm, Elem); + shr_db_item:set_write_permission(NewPerm, Elem); apply_master_op_to (MOp, Elem) when is_record(MOp, set_val) -> NewVal = MOp#set_val.val, @@ -206,7 +220,7 @@ apply_to (DBQuery, DBItem) -> true = shr_db_user:can_access ( - shr_db_item:get_permission(DBItem), + shr_db_item:get_write_permission(DBItem), get_user(DBQuery) ), MOps = DBQuery#db_query.ops, |