diff --git a/src/plant_transaction_data/__pycache__/model.cpython-311.pyc b/src/plant_transaction_data/__pycache__/model.cpython-311.pyc index f743fa1..cd2bc24 100644 Binary files a/src/plant_transaction_data/__pycache__/model.cpython-311.pyc and b/src/plant_transaction_data/__pycache__/model.cpython-311.pyc differ diff --git a/src/plant_transaction_data/__pycache__/router.cpython-311.pyc b/src/plant_transaction_data/__pycache__/router.cpython-311.pyc index a713601..bb611d1 100644 Binary files a/src/plant_transaction_data/__pycache__/router.cpython-311.pyc and b/src/plant_transaction_data/__pycache__/router.cpython-311.pyc differ diff --git a/src/plant_transaction_data/__pycache__/schema.cpython-311.pyc b/src/plant_transaction_data/__pycache__/schema.cpython-311.pyc index e2f6d80..f03b06c 100644 Binary files a/src/plant_transaction_data/__pycache__/schema.cpython-311.pyc and b/src/plant_transaction_data/__pycache__/schema.cpython-311.pyc differ diff --git a/src/plant_transaction_data/__pycache__/service.cpython-311.pyc b/src/plant_transaction_data/__pycache__/service.cpython-311.pyc index 79aa318..e1fc8d9 100644 Binary files a/src/plant_transaction_data/__pycache__/service.cpython-311.pyc and b/src/plant_transaction_data/__pycache__/service.cpython-311.pyc differ diff --git a/src/plant_transaction_data/model.py b/src/plant_transaction_data/model.py index e28dd38..387a8ae 100644 --- a/src/plant_transaction_data/model.py +++ b/src/plant_transaction_data/model.py @@ -58,3 +58,37 @@ class PlantTransactionData(Base, DefaultMixin, IdentityMixin): calc4_principal_repayment = Column(Float, nullable=True) calc4_free_cash_flow_on_equity = Column(Float, nullable=True) calc4_discounted_fcf_on_equity = Column(Float, nullable=True) + chart_total_revenue = Column(Float, nullable=True) + chart_revenue_a = Column(Float, nullable=True) + chart_revenue_b = Column(Float, nullable=True) + chart_revenue_c = Column(Float, nullable=True) + chart_revenue_d = Column(Float, nullable=True) + chart_revenue_annualized = Column(Float, nullable=True) + chart_fuel_cost_component_c = Column(Float, nullable=True) + chart_fuel_cost = Column(Float, nullable=True) + chart_fuel_cost_annualized = Column(Float, nullable=True) + chart_oem_component_bd = Column(Float, nullable=True) + chart_oem_bd_cost = Column(Float, nullable=True) + chart_oem_periodic_maintenance_cost = Column(Float, nullable=True) + chart_oem_annualized = Column(Float, nullable=True) + chart_capex_component_a = Column(Float, nullable=True) + chart_capex_biaya_investasi_tambahan = Column(Float, nullable=True) + chart_capex_acquisition_cost = Column(Float, nullable=True) + chart_capex_annualized = Column(Float, nullable=True) + fs_chart_total_revenue = Column(Float, nullable=True) + fs_chart_revenue_a = Column(Float, nullable=True) + fs_chart_revenue_b = Column(Float, nullable=True) + fs_chart_revenue_c = Column(Float, nullable=True) + fs_chart_revenue_d = Column(Float, nullable=True) + fs_chart_revenue_annualized = Column(Float, nullable=True) + fs_chart_fuel_cost_component_c = Column(Float, nullable=True) + fs_chart_fuel_cost = Column(Float, nullable=True) + fs_chart_fuel_cost_annualized = Column(Float, nullable=True) + fs_chart_oem_component_bd = Column(Float, nullable=True) + fs_chart_oem_bd_cost = Column(Float, nullable=True) + fs_chart_oem_periodic_maintenance_cost = Column(Float, nullable=True) + fs_chart_oem_annualized = Column(Float, nullable=True) + fs_chart_capex_component_a = Column(Float, nullable=True) + fs_chart_capex_biaya_investasi_tambahan = Column(Float, nullable=True) + fs_chart_capex_acquisition_cost = Column(Float, nullable=True) + fs_chart_capex_annualized = Column(Float, nullable=True) diff --git a/src/plant_transaction_data/router.py b/src/plant_transaction_data/router.py index 8d280f9..fdbc37e 100644 --- a/src/plant_transaction_data/router.py +++ b/src/plant_transaction_data/router.py @@ -1,14 +1,15 @@ -from typing import Optional +from typing import List, Optional from fastapi import APIRouter, HTTPException, status, Query from .model import PlantTransactionData from .schema import ( PlantTransactionDataPagination, PlantTransactionDataRead, + PlantTransactionChart, PlantTransactionDataCreate, PlantTransactionDataUpdate, ) -from .service import get, get_all, create, update, delete +from .service import get, get_all, get_charts, create, update, delete from src.database.service import CommonParameters, search_filter_sort_paginate from src.database.core import DbSession @@ -39,6 +40,17 @@ async def get_transaction_datas( ) +@router.get("/charts", response_model=StandardResponse[List[PlantTransactionChart]]) +async def get_chart_data(db_session: DbSession, common: CommonParameters): + chart_data = await get_charts(db_session=db_session, common=common) + if not chart_data: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, + detail="A data with this id does not exist.", + ) + return StandardResponse(data=chart_data, message="Data retrieved successfully") + + @router.get( "/{transaction_data_id}", response_model=StandardResponse[PlantTransactionDataRead] ) diff --git a/src/plant_transaction_data/schema.py b/src/plant_transaction_data/schema.py index 57844d6..d13f352 100644 --- a/src/plant_transaction_data/schema.py +++ b/src/plant_transaction_data/schema.py @@ -65,9 +65,52 @@ class PlantTransactionDataBase(DefaultBase): updated_by: Optional[str] = Field(None, nullable=True) +class PlantTransactionChart(DefaultBase): + tahun: Optional[int] = Field(None, nullable=True) + is_actual: Optional[int] = Field(None, nullable=True) + seq: Optional[int] = Field(None, nullable=True) + chart_total_revenue: Optional[float] = Field(None, nullable=True) + chart_revenue_a: Optional[float] = Field(None, nullable=True) + chart_revenue_b: Optional[float] = Field(None, nullable=True) + chart_revenue_c: Optional[float] = Field(None, nullable=True) + chart_revenue_d: Optional[float] = Field(None, nullable=True) + chart_revenue_annualized: Optional[float] = Field(None, nullable=True) + chart_fuel_cost_component_c: Optional[float] = Field(None, nullable=True) + chart_fuel_cost: Optional[float] = Field(None, nullable=True) + chart_fuel_cost_annualized: Optional[float] = Field(None, nullable=True) + chart_oem_component_bd: Optional[float] = Field(None, nullable=True) + chart_oem_bd_cost: Optional[float] = Field(None, nullable=True) + chart_oem_periodic_maintenance_cost: Optional[float] = Field(None, nullable=True) + chart_oem_annualized: Optional[float] = Field(None, nullable=True) + chart_capex_component_a: Optional[float] = Field(None, nullable=True) + chart_capex_biaya_investasi_tambahan: Optional[float] = Field(None, nullable=True) + chart_capex_acquisition_cost: Optional[float] = Field(None, nullable=True) + chart_capex_annualized: Optional[float] = Field(None, nullable=True) + fs_chart_total_revenue: Optional[float] = Field(None, nullable=True) + fs_chart_revenue_a: Optional[float] = Field(None, nullable=True) + fs_chart_revenue_b: Optional[float] = Field(None, nullable=True) + fs_chart_revenue_c: Optional[float] = Field(None, nullable=True) + fs_chart_revenue_d: Optional[float] = Field(None, nullable=True) + fs_chart_revenue_annualized: Optional[float] = Field(None, nullable=True) + fs_chart_fuel_cost_component_c: Optional[float] = Field(None, nullable=True) + fs_chart_fuel_cost: Optional[float] = Field(None, nullable=True) + fs_chart_fuel_cost_annualized: Optional[float] = Field(None, nullable=True) + fs_chart_oem_component_bd: Optional[float] = Field(None, nullable=True) + fs_chart_oem_bd_cost: Optional[float] = Field(None, nullable=True) + fs_chart_oem_periodic_maintenance_cost: Optional[float] = Field(None, nullable=True) + fs_chart_oem_annualized: Optional[float] = Field(None, nullable=True) + fs_chart_capex_component_a: Optional[float] = Field(None, nullable=True) + fs_chart_capex_biaya_investasi_tambahan: Optional[float] = Field( + None, nullable=True + ) + fs_chart_capex_acquisition_cost: Optional[float] = Field(None, nullable=True) + fs_chart_capex_annualized: Optional[float] = Field(None, nullable=True) + + class PlantTransactionDataCreate(PlantTransactionDataBase): pass + class PlantTransactionDataUpdate(PlantTransactionDataBase): pass diff --git a/src/plant_transaction_data/service.py b/src/plant_transaction_data/service.py index a3e6da9..cafe417 100644 --- a/src/plant_transaction_data/service.py +++ b/src/plant_transaction_data/service.py @@ -40,6 +40,18 @@ async def get_all( return results +async def get_charts( + *, + db_session: DbSession, + common, +): + """Returns all documents.""" + query = Select(PlantTransactionData).order_by(PlantTransactionData.tahun.asc()) + results = await db_session.execute(query) + + return results.scalars().all() + + async def create( *, db_session: DbSession, transaction_data_in: PlantTransactionDataCreate ):