majuna/app/lists/bridgelines.py

32 lines
980 B
Python
Raw Permalink Normal View History

from typing import List, Optional, TypedDict
from sqlalchemy.orm import selectinload
2022-04-27 13:30:49 +01:00
from app.models.base import Pool
2022-04-27 13:30:49 +01:00
from app.models.bridges import Bridge
class BridgelinesDict(TypedDict):
version: str
bridgelines: List[str]
2022-04-27 13:30:49 +01:00
2024-12-06 18:15:47 +00:00
def bridgelines(
pool: Pool, *, distribution_method: Optional[str] = None
) -> BridgelinesDict:
# Fetch bridges with selectinload for related data
query = Bridge.query.options(selectinload(Bridge.conf)).filter(
2022-05-16 13:29:48 +01:00
Bridge.destroyed.is_(None),
Bridge.deprecated.is_(None),
2024-12-06 18:15:47 +00:00
Bridge.bridgeline.is_not(None),
)
2022-05-06 12:28:11 +01:00
if distribution_method is not None:
query = query.filter(Bridge.conf.has(distribution_method=distribution_method))
# Collect bridgelines specific to the pool
bridgelines = [b.bridgeline for b in query.all() if b.conf.pool_id == pool.id]
# Return dictionary directly, inlining the previous `to_dict` functionality
2024-12-06 18:15:47 +00:00
return {"version": "1.0", "bridgelines": bridgelines}