From 51e5b6c6842d84d88086dd531c9eb0c075d2cbc7 Mon Sep 17 00:00:00 2001
From: Pierre Chanial <pierre.chanial@ego-gw.it>
Date: Mon, 19 Jul 2021 23:02:56 +0200
Subject: [PATCH] Raise error inside helper _find_best_project_server.

---
 app/apis/v0/projects.py | 19 +++++++++----------
 1 file changed, 9 insertions(+), 10 deletions(-)

diff --git a/app/apis/v0/projects.py b/app/apis/v0/projects.py
index d20a144..d8d7221 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(
-- 
GitLab