Skip to content

Api reference

components.health_exercises.public.business_logic

queries

health_exercise_status

get_all_health_exercise_statuses
get_all_health_exercise_statuses(user)

Get all health exercise statuses for a user

Source code in components/health_exercises/public/business_logic/queries/health_exercise_status.py
def get_all_health_exercise_statuses(
    user: FeatureUser,
) -> list[HealthExerciseStatusData]:
    """Get all health exercise statuses for a user"""
    all_health_exercise_statuses = (
        current_session.query(HealthExerciseStatus)  # noqa: ALN085
        .filter(
            HealthExerciseStatus.app_id == user.app_id,
            HealthExerciseStatus.app_user_id == user.app_user_id,
        )
        .all()
    )
    return [
        HealthExerciseStatusData.from_health_exercise_status_model(
            health_exercise_status
        )
        for health_exercise_status in all_health_exercise_statuses
    ]

components.health_exercises.public.controllers

health_exercise

HealthExerciseController

Bases: BaseController

Controller for anything related to health exercises

get_health_exercises_status

get_health_exercises_status(user)

API endpoint to get all health exercises statuses for a user

Source code in components/health_exercises/public/controllers/health_exercise.py
@HealthExerciseController.action_route(
    "/status",
    methods=["GET"],
    auth_strategy=GlobalAuthorizationStrategies().authenticated(),
)
@inject_feature_user
@obs.api_call()
def get_health_exercises_status(user: FeatureUser) -> Response:
    """API endpoint to get all health exercises statuses for a user"""
    from components.health_exercises.public.business_logic.queries.health_exercise_status import (
        get_all_health_exercise_statuses,
    )

    return make_json_response(get_all_health_exercise_statuses(user=user))

health_exercise_endpoint module-attribute

health_exercise_endpoint = Endpoint('health_exercises')

post_health_exercise_status

post_health_exercise_status(user)

API endpoint to update health exercises statuses for a user

Source code in components/health_exercises/public/controllers/health_exercise.py
@HealthExerciseController.action_route(
    "/status",
    methods=["POST"],
    auth_strategy=GlobalAuthorizationStrategies().authenticated(),
)
@inject_feature_user
@obs.api_call()
def post_health_exercise_status(user: FeatureUser) -> Response:
    """API endpoint to update health exercises statuses for a user"""
    from components.health_exercises.internal.business_logic.health_exercise_status import (
        create_or_update_health_exercise_status,
    )

    @dataclass
    class HealthExerciseStatusDataFromMobile:
        exercise_id: str
        is_favorite: bool
        is_done: bool
        space_slug: Optional[str]
        last_updated_at: str

    @dataclass
    class Arguments:
        exercises: list[HealthExerciseStatusDataFromMobile]

    args: Arguments = marshmallow_dataclass.class_schema(Arguments)().load(request.json)  # type: ignore[arg-type]

    new_remote_exercise_status = []
    for exercise in args.exercises:
        exercise_status = create_or_update_health_exercise_status(
            user=user,
            exercise_id=exercise.exercise_id,
            is_done=exercise.is_done,
            is_favorite=exercise.is_favorite,
            space_slug=exercise.space_slug,
            last_updated_at=datetime.fromisoformat(exercise.last_updated_at),
        )
        new_remote_exercise_status.append(exercise_status)

    return make_json_response(new_remote_exercise_status)

components.health_exercises.public.entities

health_exercise_status

HealthExerciseStatusData dataclass

HealthExerciseStatusData(
    exercise_id, is_favorite, is_done, last_updated_at
)

Bases: DataClassJsonMixin

Data class for HealthExerciseStatus

exercise_id instance-attribute
exercise_id
from_health_exercise_status_model classmethod
from_health_exercise_status_model(health_exercise_status)

Create a HealthExerciseStatusData from a HealthExerciseStatus model

Source code in components/health_exercises/public/entities/health_exercise_status.py
@classmethod
def from_health_exercise_status_model(
    cls,
    health_exercise_status: "HealthExerciseStatus",
) -> "HealthExerciseStatusData":
    """Create a HealthExerciseStatusData from a HealthExerciseStatus model"""
    return cls(
        is_favorite=health_exercise_status.is_favorite,
        is_done=health_exercise_status.is_done,
        exercise_id=health_exercise_status.exercise_id,
        last_updated_at=health_exercise_status.last_updated_at.replace(tzinfo=UTC),
    )
is_done instance-attribute
is_done
is_favorite instance-attribute
is_favorite
last_updated_at instance-attribute
last_updated_at