| 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, | 


