-
Notifications
You must be signed in to change notification settings - Fork 0
/
database.py
69 lines (50 loc) · 1.59 KB
/
database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
"""
This module implements the persistency necessary to preserve
giveaways across bot restarts.
"""
import pickle
from config import DATABASE_LOCATION
def db_read_ids() -> dict:
"""
Read the contents of the database.
Attributes:
None
Returns:
dict: The contents of the database.
"""
# Open the database and return the contents
with open(DATABASE_LOCATION, "rb") as file:
try:
contents = pickle.load(file)
except EOFError:
contents = {} # If the database is empty return empty dict
return contents
def db_write_ids(key, value) -> None:
"""
Adds an entry to the database.
Attributes:
key (any type): The name of the entry in the database.
value (any type): The value of the entry.
Returns:
None
"""
contents = db_read_ids() # Get the contents of the database
contents[key] = value # Add the entry to the contents
# Save the updated contents in the database
with open(DATABASE_LOCATION, "wb") as file:
pickle.dump(contents, file, protocol=4)
def db_remove_ids(*entry) -> None:
"""
Removes an number of entries from the database.
Attributes:
entry (any type): Entry to be removed from the database.
Returns:
None
"""
contents = db_read_ids() # Get the contents of the database
# Remove the database entries from the contents
for k in entry:
contents.pop(k)
# Save the updated contents in the database
with open(DATABASE_LOCATION, "wb") as file:
pickle.dump(contents, file, protocol=4)