workout-tracker / tracker /active_program.py
ronheichman's picture
Deploy workout tracker
234891d verified
Raw
History Blame Contribute Delete
800 Bytes
"""Resolve which program is the default for scheduling and /api/today."""
from __future__ import annotations
from sqlmodel import Session, select
from tracker.config import TrackerConfig
from tracker.models import Program
def resolve_active_program(session: Session, config: TrackerConfig) -> Program | None:
"""Return the configured active program, or the first program row if unset or invalid.
When ``config.active_program_id`` is set and exists in the DB, use it. Otherwise
fall back to ``select(Program).limit(1)`` for backward compatibility.
"""
if config.active_program_id is not None:
program = session.get(Program, config.active_program_id)
if program is not None:
return program
return session.exec(select(Program).limit(1)).first()