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.
be-optimumoh/src/scope_equipment/router.py

84 lines
3.6 KiB
Python

from typing import List
from fastapi import APIRouter, HTTPException, status
from fastapi.params import Query
from .model import ScopeEquipment
from .schema import ScopeEquipmentCreate, ScopeEquipmentPagination, ScopeEquipmentRead, ScopeEquipmentUpdate
from .service import get, get_all, create, update, delete, get_by_scope_name, get_exculed_scope_name
from src.database.service import CommonParameters, search_filter_sort_paginate
from src.database.core import DbSession
from src.auth.service import CurrentUser
from src.models import StandardResponse
router = APIRouter()
@router.get("", response_model=StandardResponse[ScopeEquipmentPagination])
async def get_scope_equipments(common: CommonParameters, scope_name:str = Query(None), exclude: bool = Query(False)):
"""Get all scope pagination."""
# return
data = await get_all(db_session=common["db_session"], common=common, scope_name=scope_name, exclude=exclude)
return StandardResponse(
data=data,
message="Data retrieved successfully",
)
@router.get("/scope/{scope_name}", response_model=StandardResponse[List[ScopeEquipmentRead]])
async def get_scope_name(db_session: DbSession, scope_name: str, exclude: bool = Query(False)):
if exclude:
return StandardResponse(data=await get_exculed_scope_name(db_session=db_session, scope_name=scope_name), message="Data retrieved successfully")
return StandardResponse(data=await get_by_scope_name(db_session=db_session, scope_name=scope_name), message="Data retrieved successfully")
@router.get("/{scope_equipment_id}", response_model=StandardResponse[ScopeEquipmentRead])
async def get_scope_equipment(db_session: DbSession, scope_equipment_id: str):
scope = await get(db_session=db_session, scope_equipment_id=scope_equipment_id)
if not scope:
raise HTTPException(
status_code=status.HTTP_404_NOT_FOUND,
detail="A data with this id does not exist.",
)
return StandardResponse(data=scope, message="Data retrieved successfully")
@router.post("", response_model=StandardResponse[ScopeEquipmentRead])
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.put("/{scope_equipment_id}", response_model=StandardResponse[ScopeEquipmentRead])
async def update_scope_equipment(db_session: DbSession, scope_equipment_id: str, scope__equipment_in: ScopeEquipmentUpdate):
scope_equipment = await get(db_session=db_session, scope_equipment_id=scope_equipment_id)
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("/{scope_equipment_id}", response_model=StandardResponse[ScopeEquipmentRead])
async def delete_scope_equipment(db_session: DbSession, scope_equipment_id: str):
scope_equipment = await get(db_session=db_session, scope_equipment_id=scope_equipment_id)
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, scope_equipment_id=scope_equipment_id)
return StandardResponse(message="Data deleted successfully", data=scope_equipment)