From ae49dc8879832069ecdc1534d92cb8fada4a550c Mon Sep 17 00:00:00 2001
From: hanfi <ccc@spahan.ch>
Date: Tue, 26 Sep 2023 11:36:48 +0200
Subject: [PATCH] add maintenance endpoint

---
 backend/main.py  |  7 ++++++-
 backend/utils.py | 15 +++++++++++++--
 2 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/backend/main.py b/backend/main.py
index 7a73993..2729e25 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -98,7 +98,6 @@ def verify_customer(
     }
 
 
-# main app
 @app.post("/delivery", response_model=schemas.Delivery)
 @limiter.limit("2/minute")
 def prepare_delivery(
@@ -107,6 +106,12 @@ def prepare_delivery(
     return utils.prepare_delivery(db, delivery.verification)
 
 
+@app.get("/deliveries", response_model=List[schemas.Delivery])
+def list_deliveries(token: str = Depends(oauth2_scheme), db: Session = Depends(get_db)):
+    check_token(token, None)
+    return utils.get_deliveries(db)
+
+
 @app.get("/delivery/{delivery_uuid}", response_model=schemas.Delivery)
 def get_delivery_by_uuid(
     delivery_uuid: str,
diff --git a/backend/utils.py b/backend/utils.py
index e6ec199..8628e5e 100644
--- a/backend/utils.py
+++ b/backend/utils.py
@@ -55,13 +55,24 @@ def get_storages(db: Session):
     return storages
 
 
+def get_deliveries(db):
+    items = db.query(models.Item).filter(models.Item.deployed_at == None)  # noqa: E711
+    deliveries = set(map(lambda x: x.part_of, items))
+    for delivery in deliveries:
+        delivery.items = [
+            item for item in delivery.items if item.deployed_at == None  # noqa: E711
+        ]
+        delivery.amount = len(delivery.items)
+    return sorted(deliveries, key=lambda x: x.tag)
+
+
 def get_delivery_by_uuid(db: Session, delivery_uuid: UUID4):
     delivery = db.get(models.Delivery, delivery_uuid)
     if delivery:
-        delivery.amount = len(delivery.items)
         delivery.items = [
             item for item in delivery.items if item.deployed_at == None  # noqa: E711
         ]
+        delivery.amount = len(delivery.items)
     return delivery
 
 
@@ -70,10 +81,10 @@ def get_delivery_by_tag(db: Session, delivery_tag: str):
         db.query(models.Delivery).filter(models.Delivery.tag == delivery_tag).first()
     )
     if delivery:
-        delivery.amount = len(delivery.items)
         delivery.items = [
             item for item in delivery.items if item.deployed_at == None  # noqa: E711
         ]
+        delivery.amount = len(delivery.items)
     return delivery
 
 
-- 
GitLab