From cf1a04b31534aa8f7c47dd501cb85c5c1804ee63 Mon Sep 17 00:00:00 2001
From: Bryan Brancotte <bryan.brancotte@pasteur.fr>
Date: Mon, 30 Oct 2023 18:22:05 +0100
Subject: [PATCH] list available initTable

---
 jass/server.py           | 8 ++++++++
 jass/test/test_server.py | 6 ++++++
 2 files changed, 14 insertions(+)

diff --git a/jass/server.py b/jass/server.py
index 66aa31e3..44ee25f3 100644
--- a/jass/server.py
+++ b/jass/server.py
@@ -52,6 +52,14 @@ async def read_index():
     return RedirectResponse(url="/webui/")
 
 
+@app.get("/api/tables", response_model=List[str])
+def inittable_list():
+    """List initTables"""
+    for filename in os.listdir( config["DATA_DIR"] ):
+        if filename.endswith(".hdf5") and "worktable" not in filename:
+            yield filename
+
+
 @app.post("/api/phenotypes", response_model=List[Phenotype])
 def phenotypes_list(init_table_name: InitTableNameModel):
     """List phenotypes"""
diff --git a/jass/test/test_server.py b/jass/test/test_server.py
index 71722070..024202f4 100644
--- a/jass/test/test_server.py
+++ b/jass/test/test_server.py
@@ -70,6 +70,12 @@ class TestDefaultController(JassWebClientTestCase):
         self.assertNotEqual(respT1, respMain)
         self.assertSetEqual(set(respMain.keys()), {'nb_phenotypes', 'nb_snps', 'name', 'desc'})
 
+    def test_get_tables(self):
+        response = self.testing_client.get("/api/tables")
+        self.assert200(response, "Response body is : " + response.content.decode("utf-8"))
+        resp = json.loads(response.content.decode("utf-8"))
+        self.assertSetEqual({"initTable.hdf5", "initTableTest1.hdf5"}, set(resp))
+
 
 if __name__ == "__main__":
     import unittest
-- 
GitLab