From bbe9ca23c944776db58c261dbc7035cd6399f0dc Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@nibio.no>
Date: Tue, 14 Feb 2023 10:46:14 +0100
Subject: [PATCH] Working endpoint for running a model!

---
 app/main.py      | 55 ++++++++++++++++++++++++------------------------
 requirements.txt |  2 +-
 2 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/app/main.py b/app/main.py
index 7c3485f..be6ad2e 100644
--- a/app/main.py
+++ b/app/main.py
@@ -23,58 +23,57 @@ app = FastAPI(
     }
 )
 
-
+# TODO Create a nice welcome page
 @app.get("/")
 async def root():
     return {"message": "Hello World"}
 
-@app.get("/models", response_class=PlainTextResponse,
-         name="List all models (plain text, default language)")
-async def print_model_list_default_language() -> str:
-    return _print_model_list(VIPSModel.default_language)
-
+#######  Model listing endpoints #######
 
-@app.get("/models/{language}", response_class=PlainTextResponse,
-         name="List all models (plain text)"
-         )
-async def print_model_list(language: str) -> str:
-    return _print_model_list(language)
-
-
-
-@app.get("/models/json",
-         name="List all models (Json, default language)"
-         )
+@app.get("/models/json", name="List all models (Json, default language)")
 async def print_model_list_json_default_language():
     return _print_model_list_json(VIPSModel.default_language)
 
-
-@app.get("/models/json/{language}",
-         name="List all models (Json)")
+@app.get("/models/json/{language}", name="List all models (Json)")
 async def print_model_list_json(language:str):
     return _print_model_list_json(language)
 
+@app.get("/models", response_class=PlainTextResponse, name="List all models (plain text, default language)")
+async def print_model_list_default_language() -> str:
+    return _print_model_list(VIPSModel.default_language)
+
+@app.get("/models/{language}", response_class=PlainTextResponse, name="List all models (plain text)")
+async def print_model_list(language: str) -> str:
+    return _print_model_list(language)
+
 
-@app.post("/models/run/",
-         name="Run a model"
-         )
+#######  Model running endpoints #######
+@app.post("/models/run/", name="Run a model")
 async def run_model_from_config_only(model_configuration:ModelConfiguration):
     return _run_model(model_configuration.model_id, model_configuration)
 
-@app.post("/models/{model_id}/run/",
-         name="Run a model"
-         )
+@app.post("/models/{model_id}/run/", name="Run a model")
 async def run_model_from_config_only(model_id, model_configuration:ModelConfiguration):
-    return _run_model(model_configuration.model_id, model_configuration)
+    return _run_model(model_id, model_configuration)
 
 
+#######  Helper functions #######
+# Dealing with no method overload in Python :-)
+
 def _run_model(model_id:str, model_configuration:ModelConfiguration):
+    """
+    Run a model, using provided model_id and ModelConfiguration
+    Return a list of Result objects
+    """
     requested_model = get_model_instance(model_id)
     requested_model.set_configuration(model_configuration)
     return requested_model.get_result()
 
 
 def _print_model_list(language:str):
+    """
+    Returns the list of available models in plain text format
+    """
     model_list = ""
     vips_models = get_vips_models()
     for model_id in vips_models:
@@ -83,7 +82,7 @@ def _print_model_list(language:str):
 
 def _print_model_list_json(language:str):
     """
-    Common method for the web service methods
+    Returns the list of available models in Json format
     """
     model_list = []
     vips_models = get_vips_models()
diff --git a/requirements.txt b/requirements.txt
index 20e9bbd..dbc3d72 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,2 @@
 fastapi==0.89.1
-git+https://gitlab.nibio.no/VIPS/vipscore-python-common.git@0.1.6
\ No newline at end of file
+git+https://gitlab.nibio.no/VIPS/vipscore-python-common.git@0.1.9
\ No newline at end of file
-- 
GitLab