# This file was auto-generated by Fern from our API Definition.

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class BodyColumnExprBody(str, enum.Enum):
    MEASURED_AT = "measured_at"
    WEIGHT_KILOGRAM = "weight_kilogram"
    FAT_PERCENTAGE = "fat_percentage"
    SOURCE_TYPE = "source_type"
    SOURCE_PROVIDER = "source_provider"
    SOURCE_APP_ID = "source_app_id"

    def visit(
        self,
        measured_at: typing.Callable[[], T_Result],
        weight_kilogram: typing.Callable[[], T_Result],
        fat_percentage: typing.Callable[[], T_Result],
        source_type: typing.Callable[[], T_Result],
        source_provider: typing.Callable[[], T_Result],
        source_app_id: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is BodyColumnExprBody.MEASURED_AT:
            return measured_at()
        if self is BodyColumnExprBody.WEIGHT_KILOGRAM:
            return weight_kilogram()
        if self is BodyColumnExprBody.FAT_PERCENTAGE:
            return fat_percentage()
        if self is BodyColumnExprBody.SOURCE_TYPE:
            return source_type()
        if self is BodyColumnExprBody.SOURCE_PROVIDER:
            return source_provider()
        if self is BodyColumnExprBody.SOURCE_APP_ID:
            return source_app_id()
