f
This commit is contained in:
@@ -3,14 +3,44 @@ from __future__ import annotations
|
||||
import sqlite3
|
||||
import json
|
||||
import threading
|
||||
import os
|
||||
from queue import Queue
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict, List, Optional
|
||||
from contextlib import contextmanager
|
||||
from SYS.logger import log
|
||||
|
||||
# The database is located in the project root
|
||||
ROOT_DIR = Path(__file__).resolve().parent.parent
|
||||
DB_PATH = ROOT_DIR / "medios.db"
|
||||
# The database is located in the project root (prefer explicit repo hints).
|
||||
def _resolve_root_dir() -> Path:
|
||||
env_root = (
|
||||
os.environ.get("MM_REPO")
|
||||
or os.environ.get("MM_ROOT")
|
||||
or os.environ.get("REPO")
|
||||
)
|
||||
if env_root:
|
||||
try:
|
||||
candidate = Path(env_root).expanduser().resolve()
|
||||
if candidate.exists():
|
||||
return candidate
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
cwd = Path.cwd().resolve()
|
||||
for base in [cwd, *cwd.parents]:
|
||||
if (base / "medios.db").exists():
|
||||
return base
|
||||
if (base / "CLI.py").exists():
|
||||
return base
|
||||
if (base / "config.conf").exists():
|
||||
return base
|
||||
if (base / "scripts").exists() and (base / "SYS").exists():
|
||||
return base
|
||||
|
||||
return Path(__file__).resolve().parent.parent
|
||||
|
||||
|
||||
ROOT_DIR = _resolve_root_dir()
|
||||
DB_PATH = (ROOT_DIR / "medios.db").resolve()
|
||||
|
||||
class Database:
|
||||
_instance: Optional[Database] = None
|
||||
@@ -22,8 +52,15 @@ class Database:
|
||||
return cls._instance
|
||||
|
||||
def _init_db(self):
|
||||
self.db_path = DB_PATH
|
||||
db_existed = self.db_path.exists()
|
||||
if db_existed:
|
||||
log(f"Opening existing medios.db at {self.db_path}")
|
||||
else:
|
||||
log(f"Creating medios.db at {self.db_path}")
|
||||
|
||||
self.conn = sqlite3.connect(
|
||||
str(DB_PATH),
|
||||
str(self.db_path),
|
||||
check_same_thread=False,
|
||||
timeout=30.0 # Increase timeout to 30s to avoid locking issues
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user