33 lines
924 B
Python
33 lines
924 B
Python
"""Typed contracts for the operational Dashboard overview."""
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.inventory.models import InventoryFleetSummary
|
|
from app.locations.models import LocationSummary
|
|
from app.repairs.models import ActiveRepairSummary
|
|
|
|
|
|
class DashboardAccess(BaseModel):
|
|
can_view_miners: bool = False
|
|
can_view_repairs: bool = False
|
|
can_view_locations: bool = False
|
|
|
|
|
|
class DashboardOverviewData(BaseModel):
|
|
fleet: InventoryFleetSummary | None = None
|
|
repairs: ActiveRepairSummary | None = None
|
|
locations: LocationSummary | None = None
|
|
generated_at: datetime
|
|
|
|
|
|
class DashboardOverviewMeta(BaseModel):
|
|
available_sections: list[str] = Field(default_factory=list)
|
|
|
|
|
|
class DashboardOverviewResponse(BaseModel):
|
|
data: DashboardOverviewData
|
|
meta: DashboardOverviewMeta = Field(default_factory=DashboardOverviewMeta)
|
|
error: None = None
|