Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions backend/server/api/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
set_user_access,
upsert_server_settings_sync,
)
from backend.server.parses import db as parses_db
from backend.server.parses.db import store as parses_db
from backend.server.server_context import current_world

_log = logging.getLogger(__name__)
Expand Down Expand Up @@ -423,9 +423,9 @@ async def list_parses_admin(
world = current_world()

def _query() -> list[dict]:
if not parses_db.DB_PATH.exists():
if not parses_db.path.exists():
return []
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
return parses_db.list_encounters_for_admin(conn, search=search, limit=limit, world=world)
finally:
Expand Down Expand Up @@ -506,9 +506,9 @@ async def list_tamper_reports_admin(
world = current_world()

def _query() -> tuple[list[dict], int]:
if not parses_db.DB_PATH.exists():
if not parses_db.path.exists():
return [], 0
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
rows = parses_db.list_tamper_reports(
conn,
Expand Down Expand Up @@ -571,9 +571,9 @@ async def acknowledge_tamper_report(
now_unix = int(datetime.now().timestamp())

def _ack() -> bool:
if not parses_db.DB_PATH.exists():
if not parses_db.path.exists():
return False
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
return parses_db.acknowledge_tamper_report(
conn,
Expand Down
10 changes: 5 additions & 5 deletions backend/server/api/parses/delete.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
from backend.server.core.executor import run_sync
from backend.server.core.session_user import SessionUser
from backend.server.limiter import limiter
from backend.server.parses import db as parses_db
from backend.server.parses.boss import is_boss
from backend.server.parses.db import store as parses_db
from backend.server.server_context import current_world

_log = logging.getLogger(__name__)
Expand All @@ -53,7 +53,7 @@ def _fetch_encounter_auth_rows(ids: list[int], world: str) -> list[dict]:
"""Fetch the (id, guild_name, source_dsn, title, hidden_at) rows needed to
authorise a delete, scoped to *world* so a cross-server id returns nothing.
Runs in an executor."""
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
conn.row_factory = sqlite3.Row
placeholders = ",".join("?" * len(ids))
Expand Down Expand Up @@ -127,7 +127,7 @@ async def delete_parses_batch(
now = int(time.time())

def _delete_many() -> int:
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
return sum(1 for enc in allowed_rows if _apply_delete(conn, enc, purge=purge, hidden_at=now))
finally:
Expand Down Expand Up @@ -169,7 +169,7 @@ async def delete_parse(
now = int(time.time())

def _delete_sync() -> bool:
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
return _apply_delete(conn, enc, purge=purge, hidden_at=now)
finally:
Expand Down Expand Up @@ -226,7 +226,7 @@ async def delete_parses_bulk(
_world = current_world()

def _delete_sync() -> int:
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
matches = parses_db.find_encounters_by_filter(
conn,
Expand Down
8 changes: 4 additions & 4 deletions backend/server/api/parses/ingest.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
from backend.server.core.validation import sanitize_world as _sanitize_world
from backend.server.core.validation import validate_character_name as _validate_character_name
from backend.server.limiter import limiter
from backend.server.parses import db as parses_db
from backend.server.parses.db import store as parses_db
from backend.server.parses.models import (
AttackType,
Combatant,
Expand Down Expand Up @@ -308,7 +308,7 @@ def _cached_snapshots(names: list[str], world: str | None = None) -> dict[str, C


def _update_snapshots_sync(encounter_id: int, snapshots: dict[str, CombatantSnapshot]) -> None:
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
parses_db.update_combatant_snapshots(conn, encounter_id, snapshots)
# Phase 3 (pet detection): re-classify because cls just changed. The
Expand Down Expand Up @@ -354,7 +354,7 @@ async def _backfill_encounter_guild(encounter_id: int, uploader: str, world: str
encounter_id,
)
return
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
parses_db.set_encounter_guild_name(conn, encounter_id, result)
_log.info("Background guild backfill set encounter %s guild_name=%r", encounter_id, result)
Expand Down Expand Up @@ -672,7 +672,7 @@ def _ingest_payload_sync(
damage_types = _damage_types_from_payload(payload.damage_types, enc.encid)
attack_types = _attack_types_from_payload(payload.attack_types, enc.encid)

conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
terminal = _check_idempotency_sync(conn, enc.encid, world)
if terminal is not None:
Expand Down
10 changes: 5 additions & 5 deletions backend/server/api/parses/list.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@
)
from backend.server.core.executor import run_sync
from backend.server.limiter import limiter
from backend.server.parses import db as parses_db
from backend.server.parses.db import store as parses_db
from backend.server.parses.pet_detection import classify_combatants
from backend.server.server_context import current_world
from backend.sql_loader import load_sql
Expand Down Expand Up @@ -230,7 +230,7 @@ def _list_encounters_sync(

``world`` scopes results to the active server so a Varsoon viewer only
sees Varsoon parses."""
if not parses_db.DB_PATH.exists():
if not parses_db.path.exists():
return []

# Soft-deleted parses are hidden from the list (but still feed rankings).
Expand Down Expand Up @@ -258,7 +258,7 @@ def _list_encounters_sync(

list_sql = _SQL["list_encounters_recent"].format(where_sql=where_sql, player_count_sql=_PLAYER_COUNT_SQL)

conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
conn.row_factory = sqlite3.Row
return [dict(r) for r in conn.execute(list_sql, [*params, inner_cap]).fetchall()]
Expand Down Expand Up @@ -374,7 +374,7 @@ def _encounter_detail_sync(encounter_id: int, top_attacks_per_combatant: int, wo

``world`` is used to scope the lookup so a viewer on one server can't
read another server's encounter by guessing its integer id."""
if not parses_db.DB_PATH.exists():
if not parses_db.path.exists():
return None
conn = parses_db.init_db()
try:
Expand Down Expand Up @@ -498,7 +498,7 @@ def _list_and_group_sync() -> tuple[list[dict], list[dict], int]:
rows = _list_encounters_sync(inner_cap, zone, size, active_world, search)
if not rows:
return rows, [], 0
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
# Phase 4 lazy backfill: any encounter inserted before the
# pet-detection pipeline shipped has is_player=NULL on its
Expand Down
2 changes: 1 addition & 1 deletion backend/server/api/parses/tamper_report.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@
from backend.server.core.validation import sanitize_world as _sanitize_world
from backend.server.core.validation import validate_character_name as _validate_character_name
from backend.server.limiter import limiter
from backend.server.parses import db as parses_db
from backend.server.parses.db import store as parses_db

_log = logging.getLogger(__name__)

Expand Down
8 changes: 4 additions & 4 deletions backend/server/api/rankings.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@
from backend.server.cache import TTLCache
from backend.server.core.executor import run_sync
from backend.server.limiter import limiter
from backend.server.parses import db as parses_db
from backend.server.parses.boss import is_boss
from backend.server.parses.db import store as parses_db
from backend.server.server_context import current_server, current_world
from backend.sql_loader import load_sql

Expand Down Expand Up @@ -272,7 +272,7 @@ def invalidate_zones_cache() -> None:
# from this module, and parses.db is a deeper dependency. Local
# imports keep the module-load DAG cycle-free.
from backend.server.api.parses.list import _classifier_cache_clear
from backend.server.parses import db as parses_db
from backend.server.parses.db import store as parses_db

_classifier_cache_clear()
parses_db.invalidate_is_player_cache()
Expand Down Expand Up @@ -470,9 +470,9 @@ def _load_primary_boss_kills(world: str = "Varsoon") -> list[dict]:

``world`` scopes to the active server so each server sees only its own
leaderboard data."""
if not parses_db.DB_PATH.exists():
if not parses_db.path.exists():
return []
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
conn.row_factory = sqlite3.Row
rows = conn.execute(
Expand Down
2 changes: 1 addition & 1 deletion backend/server/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ async def lifespan(_app: FastAPI) -> AsyncIterator[None]:
# Initialise the parses DB too so the schema + migrations are in place
# before the first /api/parses/ingest hits — otherwise the first
# upload's request pays that cost on the request thread.
from backend.server.parses import db as parses_db
from backend.server.parses.db import store as parses_db

parses_db.init_db()
# Initialise zones.db on startup too so admin-curation tables
Expand Down
6 changes: 3 additions & 3 deletions backend/server/parses/cleanup.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
import sqlite3
import time

from backend.server.parses import db as parses_db
from backend.server.parses.boss import is_boss
from backend.server.parses.db import store as parses_db

_log = logging.getLogger(__name__)

Expand All @@ -42,7 +42,7 @@ def run_parse_cleanup(now: int | None = None, retention_days: int | None = None)

Returns ``{"trash_deleted": n, "dup_uploads_deleted": m}``. Safe to call
repeatedly (idempotent once nothing is past the cutoff)."""
if not parses_db.DB_PATH.exists():
if not parses_db.path.exists():
return {"trash_deleted": 0, "dup_uploads_deleted": 0}

now = int(time.time()) if now is None else now
Expand All @@ -66,7 +66,7 @@ def run_parse_cleanup(now: int | None = None, retention_days: int | None = None)

trash_deleted = 0
dup_deleted = 0
conn = parses_db.init_db(parses_db.DB_PATH)
conn = parses_db.init_db()
try:
conn.row_factory = sqlite3.Row
worlds = [r[0] for r in conn.execute("SELECT DISTINCT world FROM encounters").fetchall()]
Expand Down
Loading
Loading