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