135 lines
5.4 KiB
Python

from pydantic import Field
from typing import Optional, List
from enum import Enum
from datetime import datetime
from uuid import UUID
from rapt.model.base import RaptBaseModel
from rapt.model.yeast import YeastModel
class ProfileAlertTriggers(str, Enum):
StepStart = "StepStart",
StepEnd = "StepEnd",
Temperature = "Temperature",
Gravity = "Gravity",
GravityVelocity = "GravityVelocity",
Duration = "Duration"
class ProfileValueOperatorsNullable(str, Enum):
Equals = "Equals",
LessThan = "LessThan",
GreaterThan = "GreaterThan",
null = "null"
class ProfileStepControlTypes(str, Enum):
Target = "Target",
Ramp = "Ramp",
FreeRise = "FreeRise"
class ProfileStepEndTypes(str, Enum):
Duration = "Duration",
Temperature = "Temperature",
Gravity = "Gravity",
GravityVelocity = "GravityVelocity",
Manual = "Manual"
class ProfileStepDurationTypesNullable(str, Enum):
Start = "Start",
Temperature = "Temperature",
Gravity = "Gravity",
GravityVelocity = "GravityVelocity",
Manual = "Manual",
null = "null"
class ProfileAlertModel(RaptBaseModel):
alert_text: str = Field(alias="alertText")
trigger: ProfileAlertTriggers
operator: ProfileValueOperatorsNullable
temperature: float
gravity: float
profile_id: UUID = Field(alias="profileId")
class ProfileStepAlertModel(RaptBaseModel):
alert_text: Optional[str] = Field(alias="alertText")
trigger: ProfileAlertTriggers
operator: Optional[ProfileValueOperatorsNullable]
temperature: Optional[float]
gravity: Optional[float]
length: Optional[int]
profile_step_id: UUID = Field(alias="profileStepId")
class ProfileStepModel(RaptBaseModel):
name: Optional[str]
order: int
control_type: ProfileStepControlTypes = Field(alias="controlType")
end_type: ProfileStepEndTypes = Field(alias="endType")
duration_type: Optional[ProfileStepDurationTypesNullable] = Field(alias="durationType")
operator: Optional[ProfileValueOperatorsNullable]
length: Optional[int]
temperature: Optional[float]
min_temperature: Optional[float] = Field(alias="minTemperature")
max_temperature: Optional[float] = Field(alias="maxTemperature")
gravity: Optional[float]
pump_enabled: Optional[bool] = Field(alias="pumpEnabled")
pump_utilisation: Optional[float] = Field(alias="pumpUtilisation")
heating_utilisation: Optional[float] = Field(alias="heatingUtilisation")
pid_enabled: Optional[bool] = Field(alias="pidEnabled")
sensor_differential: Optional[float] = Field(alias="sensorDifferential")
profile_id: UUID = Field(alias="profileId")
alerts: Optional[List[ProfileStepAlertModel]]
class ProfileSessionModel(RaptBaseModel):
name: Optional[str]
description: Optional[str]
profile_id: Optional[UUID] = Field(alias="profileId")
# profile: ProfileModel
brewzilla_id: Optional[UUID] = Field(alias="brewZillaId")
fermentation_chamger_id: Optional[UUID] = Field(alias="fermentationChamberId")
hydrometer_id: Optional[UUID] = Field(alias="hydrometerId")
still_id: Optional[UUID] = Field(alias="stillId")
temperature_controller_id: Optional[UUID] = Field(alias="temperatureControllerId")
start_date: Optional[datetime] = Field(alias="startDate")
end_date: Optional[datetime] = Field(alias="endDate")
original_gravity: Optional[float] = Field(alias="originalGravity")
final_gravity: Optional[float] = Field(alias="finalGravity")
yeast_id: Optional[UUID] = Field(alias="yeastId")
yeast: YeastModel
sent_alerts: List[Optional[ProfileAlertModel]] = Field(alias="sentAlerts")
class ProfileModel(RaptBaseModel):
name: str
description: Optional[str]
public: bool
profile_name: Optional[str] = Field(alias="profileName")
rating: float
rating_count: int = Field(alias="ratingCount")
rating_score: float = Field(alias="ratingScore")
copy_count: float = Field(alias="copyCount")
view_count: float = Field(alias="viewCount")
profile_type_id: Optional[UUID] = Field(alias="profileTypeId")
alerts: Optional[List[ProfileAlertModel]]
steps: Optional[List[ProfileStepModel]]
profile_sessions: Optional[List[ProfileSessionModel]] = Field(alias="profileSessions")
class ProfileSessionStatusModel(RaptBaseModel):
name: Optional[str]
description: Optional[str]
profile_id: Optional[UUID] = Field(alias="profileId")
profile: ProfileModel
brewzilla_id: Optional[UUID] = Field(alias="brewZillaId")
fermentation_chamger_id: Optional[UUID] = Field(alias="fermentationChamberId")
hydrometer_id: Optional[UUID] = Field(alias="hydrometerId")
still_id: Optional[UUID] = Field(alias="stillId")
temperature_controller_id: Optional[UUID] = Field(alias="temperatureControllerId")
start_date: Optional[datetime] = Field(alias="startDate")
end_date: Optional[datetime] = Field(alias="endDate")
original_gravity: Optional[float] = Field(alias="originalGravity")
final_gravity: Optional[float] = Field(alias="finalGravity")
yeast_id: Optional[UUID] = Field(alias="yeastId")
yeast: YeastModel
sent_alerts: List[Optional[ProfileAlertModel]] = Field(alias="sentAlerts")
estimated_end_date: Optional[datetime] = Field(alias="estimatedEndDate")
profile_length: Optional[float] = Field(alias="profileLength")
current_profile_time: Optional[float] = Field(alias="currentProfileTime")
remaining_profile_time: Optional[float] = Field(alias="remainingProfileTime")