From b9a1b279fafc52c606c776350365ccf587646e9b Mon Sep 17 00:00:00 2001
From: Frank Sauerburger <frank@sauerburger.com>
Date: Sun, 28 Aug 2022 18:28:53 +0200
Subject: [PATCH] Make title-by-id endpoint multi-query

---
 Makefile |  2 +-
 app.py   | 34 +++++++++++++++++++++++-----------
 2 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/Makefile b/Makefile
index ab14b38..3648366 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-TAG=0.4.0
+TAG=0.5.0
 
 build:
 	DOCKER_DEFAULT_PLATFORM=linux/amd64 docker build -t gitlab.sauerburger.com:5049/frank/wakefield-movie-recommender:$(TAG) .
diff --git a/app.py b/app.py
index 923cb3e..d312230 100644
--- a/app.py
+++ b/app.py
@@ -50,18 +50,30 @@ def suggest():
     }
 
 
-@app.route("/titles/<int:mid>")
-def byid(mid):
-    """Show healthz status"""
-    if mid not in movie_titles:
-        abort(404)
+@app.route("/titles/<mids>")
+def byid(mids):
+    """Load movie data by id"""
+    results = []
+
+    for mid in mids.split(","):
+        try:
+            mid = int(mid)
+            if mid not in movie_titles:
+                raise ValueError()
+        except ValueError:
+            results.append({})
+            continue
+
+        res_title, res_year = movie_titles[mid]
+        data = {
+            "id": mid,
+            "title": res_title,
+            "year": res_year
+        }
+        results.append(data)
+
+    return {"movies": results}
 
-    res_title, res_year = movie_titles[mid]
-    return {
-        "id": mid,
-        "title": res_title,
-        "year": res_year
-    }
 
 @app.route("/titles/healthz")
 def healthz():
-- 
GitLab