28 lines
1.2 KiB
Python
28 lines
1.2 KiB
Python
from __future__ import annotations
|
|
|
|
from app.core.db import get_db
|
|
from app.services.runtime_status_service import get_runtime_status
|
|
|
|
|
|
def fetch_overview() -> dict:
|
|
queries = {
|
|
"domains_total": "select count(*) from domains",
|
|
"pending_total": "select count(*) from domains where detect_status = 0",
|
|
"completed_total": "select count(*) from domains where detect_status = 1",
|
|
"running_total": "select count(*) from domains where detect_status = 2",
|
|
"blacklist_total": "select count(*) from domains where detect_status = 3",
|
|
"failed_total": "select count(*) from domains where detect_status = 4",
|
|
"sensitive_words_total": "select count(*) from sensitive_words",
|
|
}
|
|
result: dict[str, int | str] = {}
|
|
with get_db() as conn:
|
|
with conn.cursor() as cur:
|
|
for key, query in queries.items():
|
|
cur.execute(query)
|
|
result[key] = cur.fetchone()[0]
|
|
runtime = get_runtime_status()
|
|
result["worker_status"] = "online" if runtime["worker"]["running"] else "offline"
|
|
result["api_status"] = "online"
|
|
result["worker_mode"] = runtime["worker"]["mode"]
|
|
return result
|