initial
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
"""Service layer for cache-aware fetching of FINN ads and Eiendom.no units."""
|
||||
|
||||
import logging
|
||||
|
||||
from .ad import fetch_ad_details
|
||||
from .cache import get_eiendom_unit as get_cached_eiendom_unit
|
||||
from .cache import get_finn_ad, init_db, save_eiendom_unit, save_finn_ad
|
||||
from .config import FINN_CACHE_PATH
|
||||
from .eiendom_no import get_unit
|
||||
from .models import EiendomUnit, FinnAd
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def get_or_fetch_ad(finnkode: str, force_refresh: bool = False) -> FinnAd:
|
||||
"""Get FinnAd from cache or fetch fresh. Never returns None."""
|
||||
conn = init_db(FINN_CACHE_PATH)
|
||||
ad = None if force_refresh else get_finn_ad(conn, finnkode, ttl_hours=24)
|
||||
if ad is None:
|
||||
ad = await fetch_ad_details(finnkode)
|
||||
save_finn_ad(conn, ad)
|
||||
return ad
|
||||
|
||||
|
||||
async def get_or_fetch_eiendom_unit(
|
||||
unit_code: str, force_refresh: bool = False
|
||||
) -> EiendomUnit | None:
|
||||
"""Get EiendomUnit from cache or fetch fresh."""
|
||||
conn = init_db(FINN_CACHE_PATH)
|
||||
unit = None if force_refresh else get_cached_eiendom_unit(conn, unit_code, ttl_hours=24)
|
||||
if unit is None:
|
||||
unit = await get_unit(unit_code)
|
||||
if unit is not None:
|
||||
save_eiendom_unit(conn, unit)
|
||||
return unit
|
||||
Reference in New Issue
Block a user