Refactor geo re-resolve to use geo_cache repo and move data-access out of router
This commit is contained in:
33
backend/app/repositories/geo_cache_repo.py
Normal file
33
backend/app/repositories/geo_cache_repo.py
Normal file
@@ -0,0 +1,33 @@
|
||||
"""Repository for the geo cache persistent store.
|
||||
|
||||
This module provides typed, async helpers for querying and mutating the
|
||||
``geo_cache`` table in the BanGUI application database.
|
||||
|
||||
All functions accept an open :class:`aiosqlite.Connection` and do not manage
|
||||
connection lifetimes.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import TYPE_CHECKING
|
||||
|
||||
if TYPE_CHECKING:
|
||||
import aiosqlite
|
||||
|
||||
|
||||
async def get_unresolved_ips(db: aiosqlite.Connection) -> list[str]:
|
||||
"""Return all IPs in ``geo_cache`` where ``country_code`` is NULL.
|
||||
|
||||
Args:
|
||||
db: Open BanGUI application database connection.
|
||||
|
||||
Returns:
|
||||
List of IPv4/IPv6 strings that need geo resolution.
|
||||
"""
|
||||
ips: list[str] = []
|
||||
async with db.execute(
|
||||
"SELECT ip FROM geo_cache WHERE country_code IS NULL"
|
||||
) as cur:
|
||||
async for row in cur:
|
||||
ips.append(str(row[0]))
|
||||
return ips
|
||||
Reference in New Issue
Block a user