1717
1818
1919class DB :
20- KEY_USERS : str = "users"
21- KEY_PRODUCTS : str = "products"
22- KEY_SHOPPING_CARTS : str = "shopping_carts"
23-
2420 db_name : str = str (DB_FILE_NAME )
25- # db: shelve.Shelf | None = None
2621
2722 def __init__ (self ):
2823 self .db : shelve .Shelf | None = None
@@ -32,26 +27,19 @@ def actual_decorator(func):
3227 @functools .wraps (func )
3328 def wrapped (self , * args , ** kwargs ):
3429 has_db : bool = self .db is not None
35- print ("[wrapped]" , has_db , self .db )
3630 try :
3731 if not has_db :
38- print ("[wrapped] open" )
3932 self .db = shelve .open (self .db_name , writeback = True )
4033 return func (self , * args , ** kwargs )
4134 finally :
42- print ("[wrapped] close" , has_db , self .db )
4335 if not has_db and self .db is not None :
44- print ("[wrapped] closed" )
4536 self .db .close ()
4637 self .db = None
4738
4839 return wrapped
4940
5041 return actual_decorator
5142
52- def _generate_id (self ) -> str :
53- return str (uuid4 ())
54-
5543 @session ()
5644 def get_value (self , name : str , default : Any = None ) -> Any :
5745 if not name :
@@ -65,6 +53,12 @@ def get_value(self, name: str, default: Any = None) -> Any:
6553 def set_value (self , name : str , value : Any ):
6654 self .db [name ] = value
6755
56+ def inc_value (self , name : str ) -> int :
57+ value = self .get_value (name , default = 0 )
58+ value += 1
59+ self .set_value (name , value )
60+ return value
61+
6862
6963db = DB ()
7064print ("name" , db .get_value ("name" ))
@@ -85,4 +79,6 @@ def set_value(self, name: str, value: Any):
8579counter ["value" ] += 1
8680db .set_value ("counter" , counter )
8781
82+ print ([db .inc_value ("age" ) for _ in range (3 )])
83+
8884print (dict (db .get_value ("" )))
0 commit comments