from datetime import datetime from typing import Any, List, Optional from uuid import UUID from pydantic import Field from src.models import CommonParams, DefaultBase, Pagination class PlantFSTransactionDataBase(DefaultBase): fs_chart_total_revenue: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_revenue_a: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_revenue_b: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_revenue_c: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_revenue_d: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_revenue_annualized: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_fuel_cost_component_c: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_fuel_cost: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_fuel_cost_annualized: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_oem_component_bd: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_oem_bd_cost: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_oem_periodic_maintenance_cost: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_oem_annualized: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_capex_component_a: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_capex_biaya_investasi_tambahan: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_capex_acquisition_cost: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_chart_capex_annualized: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) fs_cost_disposal_cost: Optional[float] = Field( None, ge=0, le=1_000_000_000_000_000 ) tahun: Optional[int] = Field(None, ge=1900, le=9999) seq: Optional[int] = Field(None, ge=0, le=9999) created_at: Optional[datetime] = Field(None) updated_at: Optional[datetime] = Field(None) created_by: Optional[str] = Field(None) updated_by: Optional[str] = Field(None) class PlantFSTransactionDataCreate(PlantFSTransactionDataBase): pass class PlantFSTransactionDataUpdate(PlantFSTransactionDataBase): pass class PlantFSTransactionDataRead(PlantFSTransactionDataBase): id: UUID class PlantFSTransactionDataPagination(Pagination): items: List[PlantFSTransactionDataRead] = [] class PlantFSTransactionDataImport(DefaultBase): data: List[List[Any]] seq: Optional[int] = None class PlantFSTransactionChart(PlantFSTransactionDataBase): pass class PlantFSChartData(DefaultBase): items: List[PlantFSTransactionChart] bep_year: Optional[int] = Field(None, ge=0, le=9999) bep_total_lcc: Optional[float] = Field(None, ge=0, le=1_000_000_000_000_000) class ListQueryParams(CommonParams): search: Optional[str] = Field( default=None, description="Search keyword", )