diff --git a/app/apis/v0/projects.py b/app/apis/v0/projects.py index d20a144aee456f4ce7ede4eb7289709d0983d1de..d8d722160233a89855fcdf6557f27045b4296935 100644 --- a/app/apis/v0/projects.py +++ b/app/apis/v0/projects.py @@ -1,6 +1,6 @@ """Definitions of the endpoints related the projects.""" import logging -from typing import Any, Optional +from typing import Any from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy import create_engine, text, update @@ -38,11 +38,6 @@ def create_project( ) server = _find_best_project_server(session, project) - if server is None: - raise HTTPException( - status_code=status.HTTP_507_INSUFFICIENT_STORAGE, - detail='No database has enough storage for this project.', - ) # preempt the required storage _update_server_available_size(session, server, -project.max_size) @@ -80,13 +75,17 @@ def create_project( return db_project -def _find_best_project_server( - session: Session, project: Project -) -> Optional[DBProjectServer]: +def _find_best_project_server(session: Session, project: Project) -> DBProjectServer: stmt = select(DBProjectServer).where( DBProjectServer.available_size >= project.max_size ) - return session.execute(stmt).scalars().first() + server = session.execute(stmt).scalars().first() + if server is None: + raise HTTPException( + status_code=status.HTTP_507_INSUFFICIENT_STORAGE, + detail='No database has enough storage for this project.', + ) + return server def _update_server_available_size(