from typing import Annotated, List, Optional from src.models import StandardResponse from .service import get_all_master, get_master from fastapi import APIRouter, HTTPException, Query, status from .schema import EquipmentMasterPaginated, EquipmentMasterQuery, EquipmentMasterRead from src.database.service import search_filter_sort_paginate, CommonParameters from src.database.core import DbSession router = APIRouter() @router.get("", response_model=StandardResponse[EquipmentMasterPaginated]) async def get_all_equipment_master_tree( db_session: DbSession, common: CommonParameters, params: Annotated[EquipmentMasterQuery, Query()], ): equipment_masters = await get_all_master( parent_id=params.parent_id, search=params.search, items_per_page=params.items_per_page, db_session=db_session, common=common, ) return StandardResponse( data=equipment_masters, message="Data retrieved successfully" ) @router.get("/export-all", response_model=StandardResponse[EquipmentMasterPaginated]) async def get_all_equipment_master_tree_export_all( db_session: DbSession, common: CommonParameters, ): common["all"] = True equipment_masters = await get_all_master( db_session=db_session, common=common, ) return StandardResponse( data=equipment_masters, message="All Equipment Master Data retrieved successfully" ) @router.get( "/{equipment_master_id}", response_model=StandardResponse[EquipmentMasterRead] ) async def get_equipment_master_tree(db_session: DbSession, equipment_master_id: str): equipment_master = await get_master( db_session=db_session, equipment_master_id=equipment_master_id ) if not equipment_master: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="A data with this id does not exist.", ) return StandardResponse( data=equipment_master, message="Data retrieved successfully" )