17
17
18
18
19
19
class DB :
20
- KEY_USERS : str = "users"
21
- KEY_PRODUCTS : str = "products"
22
- KEY_SHOPPING_CARTS : str = "shopping_carts"
23
-
24
20
db_name : str = str (DB_FILE_NAME )
25
- # db: shelve.Shelf | None = None
26
21
27
22
def __init__ (self ):
28
23
self .db : shelve .Shelf | None = None
@@ -32,26 +27,19 @@ def actual_decorator(func):
32
27
@functools .wraps (func )
33
28
def wrapped (self , * args , ** kwargs ):
34
29
has_db : bool = self .db is not None
35
- print ("[wrapped]" , has_db , self .db )
36
30
try :
37
31
if not has_db :
38
- print ("[wrapped] open" )
39
32
self .db = shelve .open (self .db_name , writeback = True )
40
33
return func (self , * args , ** kwargs )
41
34
finally :
42
- print ("[wrapped] close" , has_db , self .db )
43
35
if not has_db and self .db is not None :
44
- print ("[wrapped] closed" )
45
36
self .db .close ()
46
37
self .db = None
47
38
48
39
return wrapped
49
40
50
41
return actual_decorator
51
42
52
- def _generate_id (self ) -> str :
53
- return str (uuid4 ())
54
-
55
43
@session ()
56
44
def get_value (self , name : str , default : Any = None ) -> Any :
57
45
if not name :
@@ -65,6 +53,12 @@ def get_value(self, name: str, default: Any = None) -> Any:
65
53
def set_value (self , name : str , value : Any ):
66
54
self .db [name ] = value
67
55
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
+
68
62
69
63
db = DB ()
70
64
print ("name" , db .get_value ("name" ))
@@ -85,4 +79,6 @@ def set_value(self, name: str, value: Any):
85
79
counter ["value" ] += 1
86
80
db .set_value ("counter" , counter )
87
81
82
+ print ([db .inc_value ("age" ) for _ in range (3 )])
83
+
88
84
print (dict (db .get_value ("" )))
0 commit comments