from typing import List, Optional from fastapi import APIRouter, Depends, HTTPException, status from fastapi.params import Query from src.auth.service import CurrentUser from src.database.core import DbSession, CollectorDbSession from src.database.service import CommonParameters, search_filter_sort_paginate from src.models import StandardResponse from src.auth.access_control import require_any_role, ALLOWED_ROLES from .schema import (MasterEquipmentPagination, ScopeEquipmentCreate, ScopeEquipmentPagination, ScopeEquipmentRead, ScopeEquipmentUpdate) from .service import (create, delete, get_all, get_all_master_equipment, update, get_history_standard_scope_wo_service) from uuid import UUID router = APIRouter(dependencies=[Depends(require_any_role(*ALLOWED_ROLES))]) @router.get("", response_model=StandardResponse[ScopeEquipmentPagination]) async def get_scope_equipments(common: CommonParameters, scope_name: str = Query(None)): """Get all scope pagination.""" # return data = await get_all(common=common, oh_scope=scope_name) return StandardResponse( data=data, message="Data retrieved successfully", ) @router.get( "/available/{scope_name}", response_model=StandardResponse[MasterEquipmentPagination], ) async def get_master_equipment(common: CommonParameters, scope_name: str): results = await get_all_master_equipment(common=common, scope_name=scope_name) return StandardResponse(data=results, message="Data retrieved successfully") @router.post("", response_model=StandardResponse[List[str]]) async def create_scope_equipment( db_session: DbSession, scope_equipment_in: ScopeEquipmentCreate ): scope = await create(db_session=db_session, scope_equipment_in=scope_equipment_in) return StandardResponse(data=scope, message="Data created successfully") @router.get("/history/{oh_session_id}", response_model=StandardResponse[List[dict]]) async def get_history_standard_scope_wo( db_session: DbSession, collector_db_session:CollectorDbSession, oh_session_id:UUID): results = await get_history_standard_scope_wo_service(db_session=db_session, collector_db_session=collector_db_session, oh_session_id=oh_session_id) return StandardResponse(data=results, message="Data retrieved successfully") # @router.put("/{assetnum}", response_model=StandardResponse[ScopeEquipmentRead]) # async def update_scope_equipment( # db_session: DbSession, assetnum: str, scope__equipment_in: ScopeEquipmentUpdate # ): # scope_equipment = await get_by_assetnum(db_session=db_session, assetnum=assetnum) # if not scope_equipment: # raise HTTPException( # status_code=status.HTTP_404_NOT_FOUND, # detail="A data with this id does not exist.", # ) # return StandardResponse( # data=await update( # db_session=db_session, # scope_equipment=scope_equipment, # scope__equipment_in=scope__equipment_in, # ), # message="Data updated successfully", # ) # @router.delete("/{assetnum}", response_model=StandardResponse[None]) # async def delete_scope_equipment(db_session: DbSession, assetnum: str): # scope_equipment = await get_by_assetnum(db_session=db_session, assetnum=assetnum) # if not scope_equipment: # raise HTTPException( # status_code=status.HTTP_404_NOT_FOUND, # detail=[{"msg": "A data with this id does not exist."}], # ) # await delete(db_session=db_session, assetnum=assetnum) # return StandardResponse(message="Data deleted successfully", data=None)