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.
93 lines
3.6 KiB
Python
93 lines
3.6 KiB
Python
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)
|