I'm very new to fastapi. I've a request which looks something like this
@router.post("/", response_model=EducationInResp)
async def create_Education_account(
education_in: EducationCreation,
current_user=Depends(get_current_user),
has_perm=Depends(user_has_create_perms),
):
Now the EducationCreation data model has a field called customer_id
I want to check if the customer id exists in the database. Now I know that I can manually do that within the function itself and it's not recommended to do database related validation in Schema. Is there any way to check if the customer id exists in the database using dependencies. Is there something like this?
async def check_customer_exist(some_val):
# some operation here to check and raise exception
@router.post("/", response_model=EducationInResp)
async def create_Education_account(
education_in: EducationCreation = Depends(check_customer_exist),
current_user=Depends(get_current_user),
has_perm=Depends(user_has_create_perms),
):
You could do that by declaring the parameter in the dependency function, as described in the documentation. If the customer_id exists in the database, then return the data to the route. If not, you could then raise an HTTPException, or handle it as desired.
from fastapi.exceptions import HTTPException
customer_ids = [1, 2, 3]
async def check_customer_exist(education_in: EducationCreation):
if education_in.customer_id not in customer_ids: # here, check if the customer id exists in the database.
raise HTTPException(status_code=404, detail="Customer ID not found")
else:
return education_in
@router.post("/", response_model=EducationInResp)
async def create_Education_account(
education_in: EducationCreation = Depends(check_customer_exist),
current_user=Depends(get_current_user),
has_perm=Depends(user_has_create_perms),
):