"""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