From 925be674a6bf2aee7ffc6b8aaccd1d7c873b7d87 Mon Sep 17 00:00:00 2001
From: Yannic Nevado Hidalgo <yannic.hidalgo@stud.h-da.de>
Date: Fri, 4 Mar 2022 13:52:38 +0100
Subject: [PATCH] =?UTF-8?q?fix(error-handling):=20sicherstellen=20das=20be?=
 =?UTF-8?q?nutzer=20existieren=20m=C3=BCssen=20vor=20GET=20und=20DELETE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 README.adoc   |  2 +-
 app/app.py    | 35 +++++++++++++++++++++++++++++------
 app/models.py |  4 +++-
 3 files changed, 33 insertions(+), 8 deletions(-)

diff --git a/README.adoc b/README.adoc
index 1e6586a..bd47e45 100644
--- a/README.adoc
+++ b/README.adoc
@@ -53,7 +53,7 @@ Die Routen sind Passwort geschützt.
 # passwort: admin
 ----
 
-* Dies kann via `curl --user admin:admin -X GET http://localhost:5000/benutzer/1` getestet werden. Ohne Zugangsdaten bekommt man ein `Unauthorized Access` zurück.
+* Dies kann via `curl -X GET http://localhost:5000/benutzer/1` getestet werden. Ohne Zugangsdaten bekommt man ein `Unauthorized Access` zurück.
 
 === GET
 
diff --git a/app/app.py b/app/app.py
index c403d37..23101ae 100644
--- a/app/app.py
+++ b/app/app.py
@@ -35,12 +35,20 @@ def index():
 @app.route("/benutzer/<id>", methods=["GET"])
 @auth.login_required
 def get_email(id):
-    benutzer_email = db.session.query(Benutzer.email).filter(Benutzer.customerid == id).first()[0]
-    return jsonify(email=benutzer_email)
+
+    exists = db.session.query(db.exists().where(Benutzer.customerid == id)).scalar()
+        
+    if exists:
+       benutzer_email = db.session.query(Benutzer.email).filter(Benutzer.customerid == id).first()[0]
+       return jsonify(email=benutzer_email)
+    else:
+        return json.dumps({'Benutzer': 'existiert nicht'})
+    
 
 @app.route("/benutzer", methods=["POST"])
 @auth.login_required
 def create_user():
+
     new_user = Benutzer(
         vorname=request.json['vorname'],
         nachname=request.json['nachname'],
@@ -48,15 +56,30 @@ def create_user():
     )
     db.session.add(new_user)
     db.session.commit()
-    return json.dumps({'Benutzer': 'hinzugefügt'})
+   
+    benutzer = json.dumps(
+        {"vorname": new_user.vorname,
+         "nachname": new_user.nachname,
+         "email": new_user.email
+         })
+    
+    #return benutzer
+    return jsonify(benutzer)
 
 
 @app.route("/benutzer/<id>", methods=["DELETE"])
 @auth.login_required
 def delete_user(id):
-    Benutzer.query.filter_by(customerid=id).delete()
-    db.session.commit()
-    return json.dumps({'Benutzer': 'gelöscht'})
+    
+    exists = db.session.query(db.exists().where(Benutzer.customerid == id)).scalar()
+        
+    if exists:
+        Benutzer.query.filter_by(customerid=id).delete()
+        db.session.commit()
+        return json.dumps({'Benutzer': 'geloescht'})
+    else:
+        return json.dumps({'Benutzer': 'existiert nicht'})
+    
 
 if __name__ == "__main__":
     app.run(debug=True)
\ No newline at end of file
diff --git a/app/models.py b/app/models.py
index 8254fc7..a22447e 100644
--- a/app/models.py
+++ b/app/models.py
@@ -1,4 +1,5 @@
 from flask_sqlalchemy import SQLAlchemy
+import json
  
 db = SQLAlchemy()
  
@@ -17,4 +18,5 @@ class Benutzer(db.Model):
         self.email = email
       
     def __repr__(self):
-        return f"{self.customerID}:{self.vorname}:{self.nachname}:{self.email}"
\ No newline at end of file
+        benutzer = json.dumps({"vorname": self.vorname, "nachname": self.nachname, "email": self.email})
+        return benutzer
\ No newline at end of file
-- 
GitLab