feat: chart data api

main
MrWaradana 12 months ago
parent 5ca3c6808c
commit caa667f2b8

@ -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)

@ -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]
)

@ -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

@ -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
):

Loading…
Cancel
Save