You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.4 KiB
Python
64 lines
2.4 KiB
Python
from datetime import datetime
|
|
from typing import List, Optional
|
|
from uuid import UUID
|
|
|
|
from pydantic import Field, field_validator
|
|
from src.models import DefaultBase, Pagination
|
|
|
|
|
|
class YeardataBase(DefaultBase):
|
|
year: Optional[int] = Field(None, ge=1900)
|
|
rp_per_kwh: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
total_lost: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
man_hour: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_ens_energy_not_served: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_bpp_system: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_bpp_pembangkit: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_dmn_daya_mampu_netto: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_marginal_cost: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_efdh_equivalent_forced_derated_hours: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_foh_forced_outage_hours: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
asset_crit_extra_fuel_cost: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
cf: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
eaf: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000)
|
|
rbd_simulation_id: Optional[str] = Field(None)
|
|
created_at: Optional[datetime] = Field(None)
|
|
updated_at: Optional[datetime] = Field(None)
|
|
created_by: Optional[str] = Field(None)
|
|
updated_by: Optional[str] = Field(None)
|
|
|
|
@field_validator(
|
|
"asset_crit_ens_energy_not_served",
|
|
"asset_crit_bpp_system",
|
|
"asset_crit_bpp_pembangkit",
|
|
"asset_crit_dmn_daya_mampu_netto",
|
|
"asset_crit_marginal_cost",
|
|
"asset_crit_efdh_equivalent_forced_derated_hours",
|
|
"asset_crit_foh_forced_outage_hours",
|
|
"asset_crit_extra_fuel_cost",
|
|
"cf",
|
|
"eaf",
|
|
mode="before",
|
|
)
|
|
@classmethod
|
|
def empty_string_to_none(cls, v):
|
|
if v == "":
|
|
return None
|
|
return v
|
|
|
|
|
|
class YeardataCreate(YeardataBase):
|
|
pass
|
|
|
|
|
|
class YeardataUpdate(YeardataBase):
|
|
pass
|
|
|
|
|
|
class YeardataRead(YeardataBase):
|
|
id: UUID
|
|
|
|
|
|
class YeardataPagination(Pagination):
|
|
items: List[YeardataRead] = []
|