Add project ref count to allow multiple connections
This commit is contained in:
@@ -3,6 +3,8 @@ from .connection import g_conn_dict as conn
|
|||||||
|
|
||||||
# no undo/redo
|
# no undo/redo
|
||||||
|
|
||||||
|
_project_open_count: dict[str, int] = {}
|
||||||
|
|
||||||
def have_project(name: str) -> bool:
|
def have_project(name: str) -> bool:
|
||||||
with pg.connect(conninfo="dbname=postgres host=127.0.0.1", autocommit=True) as conn:
|
with pg.connect(conninfo="dbname=postgres host=127.0.0.1", autocommit=True) as conn:
|
||||||
with conn.cursor() as cur:
|
with conn.cursor() as cur:
|
||||||
@@ -23,11 +25,19 @@ def delete_project(name: str) -> None:
|
|||||||
cur.execute(f"drop database {name}")
|
cur.execute(f"drop database {name}")
|
||||||
|
|
||||||
def open_project(name: str) -> None:
|
def open_project(name: str) -> None:
|
||||||
conn[name] = pg.connect(conninfo=f"dbname={name} host=127.0.0.1", autocommit=True)
|
if name not in _project_open_count:
|
||||||
|
conn[name] = pg.connect(conninfo=f"dbname={name} host=127.0.0.1", autocommit=True)
|
||||||
|
_project_open_count[name] = 0
|
||||||
|
|
||||||
|
_project_open_count[name] += 1
|
||||||
|
|
||||||
def is_project_open(name: str) -> bool:
|
def is_project_open(name: str) -> bool:
|
||||||
return name in conn
|
return name in conn
|
||||||
|
|
||||||
def close_project(name: str) -> None:
|
def close_project(name: str) -> None:
|
||||||
conn[name].close()
|
if name in _project_open_count:
|
||||||
del conn[name]
|
_project_open_count[name] -= 1
|
||||||
|
if _project_open_count[name] == 0:
|
||||||
|
conn[name].close()
|
||||||
|
del conn[name]
|
||||||
|
del _project_open_count[name]
|
||||||
|
|||||||
Reference in New Issue
Block a user