Skip to content

Commit e59d64c

Browse files
committed
nested db enter
1 parent 58dba8a commit e59d64c

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

src/discord-cluster-manager/leaderboard_db.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def __init__(self, host: str, database: str, user: str, password: str, port: str
6666
"port": port,
6767
}
6868
self.connection: Optional[psycopg2.extensions.connection] = None
69+
self.refcount: int = 0
6970
self.cursor: Optional[psycopg2.extensions.cursor] = None
7071

7172
def connect(self) -> bool:
@@ -93,14 +94,20 @@ def disconnect(self):
9394

9495
def __enter__(self):
9596
"""Context manager entry"""
96-
assert self.connection is None, "Nested db __enter__"
97+
if self.connection is not None:
98+
self.refcount += 1
99+
return self
100+
97101
if self.connect():
102+
self.refcount = 1
98103
return self
99104
return None
100105

101106
def __exit__(self, exc_type, exc_val, exc_tb):
102107
"""Context manager exit"""
103-
self.disconnect()
108+
self.refcount -= 1
109+
if self.refcount == 0:
110+
self.disconnect()
104111

105112
def create_leaderboard(self, leaderboard: LeaderboardItem) -> int:
106113
try:

0 commit comments

Comments
 (0)