You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
2.0 KiB
Python

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