135 lines
5.4 KiB
Python
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")
|