From bb3d048de67deaa937d16d06046d576a868732cf Mon Sep 17 00:00:00 2001 From: IshayuR Date: Fri, 8 Nov 2024 11:40:13 -0500 Subject: [PATCH] adding Swagger documentation to app.py --- Backend/app.py | 305 +++++++++++++++++- .../databasefunctions.cpython-311.pyc | Bin 0 -> 12075 bytes 2 files changed, 297 insertions(+), 8 deletions(-) create mode 100644 Backend/database_files/__pycache__/databasefunctions.cpython-311.pyc diff --git a/Backend/app.py b/Backend/app.py index a24b08b..b860890 100644 --- a/Backend/app.py +++ b/Backend/app.py @@ -1,20 +1,54 @@ """ This module provides functions for HTTP communication and -route functions +route functions. """ from flask import Flask, request, jsonify +from flasgger import Swagger from database_files import databasefunctions + app = Flask(__name__) +Swagger(app) # Initialize Swagger # ----------------------------------------------------------------------------------------- @app.route("/add_newuser", methods=["POST"]) def add_newuser(): """ - Adds new user to database + Adds a new user to the database. + --- + parameters: + - name: username + in: body + type: string + required: true + - name: password + in: body + type: string + required: true + - name: name + in: body + type: string + required: true + - name: age + in: body + type: integer + required: true + - name: location + in: body + type: string + required: true + responses: + 200: + description: User added successfully with generated user ID. + schema: + type: object + properties: + user_id: + type: integer + example: 1 """ data = request.get_json() - newuser_id = databasefunctions.insert_user(data.get("username"),data.get("password"), + newuser_id = databasefunctions.insert_user(data.get("username"), data.get("password"), data.get("name"), data.get("age"), data.get("location")) @@ -23,12 +57,51 @@ def add_newuser(): @app.route("/add_newpet", methods=["POST"]) def add_newpet(): """ - Adds new pet to database + Adds a new pet to the database. + --- + parameters: + - name: name + in: body + type: string + required: true + - name: age + in: body + type: integer + required: true + - name: gender + in: body + type: string + required: true + - name: breed + in: body + type: string + required: true + - name: type + in: body + type: string + required: true + - name: location + in: body + type: string + required: true + - name: photo_path + in: body + type: string + required: false + responses: + 200: + description: Pet added successfully with generated pet ID. + schema: + type: object + properties: + pet_id: + type: integer + example: 101 """ data = request.get_json() newpet_id = databasefunctions.insert_pet(data.get("name"), data.get("age"), - data.get("gender"), data.get("breed"), data.get("type"), - data.get("location"), data.get("photo_path")) + data.get("gender"), data.get("breed"), data.get("type"), + data.get("location"), data.get("photo_path")) return jsonify({'pet_id': newpet_id}), 200 @@ -44,12 +117,31 @@ def add_newfavorite(): ('Luna', 2, 'female', 'Siamese', 'cat', 'Chicago', 'images/luna.jpg'), ('Charlie', 4, 'male', 'Beagle', 'dog', 'Los Angeles', 'images/lizzie_izzie.jpg'), ('Daisy', 1, 'female', 'Labrador Retriever', 'dog', 'Miami', 'images/monster.jpg'); + --- + parameters: + - name: user_id + in: body + type: integer + required: true + - name: pet_id + in: body + type: integer + required: true + responses: + 200: + description: Favorite added successfully with generated favorite ID. + schema: + type: object + properties: + favorite_id: + type: integer + example: 201 """ data = request.get_json() newfavorite_id = databasefunctions.insert_favorite(data.get("user_id"), data.get("pet_id")) - return jsonify({'faviorte_id': newfavorite_id}), 200 + return jsonify({'favorite_id': newfavorite_id}), 200 @@ -59,6 +151,22 @@ def add_newfavorite(): def removeuser(): """ Remove user from database + --- + parameters: + - name: user_id + in: body + type: integer + required: true + responses: + 200: + description: User removed successfully. + schema: + type: object + properties: + row_effected: + type: integer + description: Number of rows deleted in user table. + example: 1 """ data = request.get_json() userid = data.get("user_id") @@ -71,6 +179,22 @@ def removeuser(): def removepet(): """ Remove pet from database + --- + parameters: + - name: pet_id + in: body + type: integer + required: true + responses: + 200: + description: Pet removed successfully. + schema: + type: object + properties: + row_effected: + type: integer + description: Number of rows deleted in pet table. + example: 1 """ data = request.get_json() petid = data.get("pet_id") @@ -83,6 +207,26 @@ def removepet(): def removefavorite(): """ Remove favorite from database + --- + parameters: + - name: user_id + in: body + type: integer + required: true + - name: pet_id + in: body + type: integer + required: true + responses: + 200: + description: Favorite removed successfully. + schema: + type: object + properties: + row_effected: + type: integer + description: Number of rows deleted in the favorite table. + example: 1 """ data = request.get_json() roweffected = databasefunctions.remove_favorite(data.get("user_id"),data.get("pet_id")) @@ -97,6 +241,25 @@ def removefavorite(): def fetch_userid(): """ fetch userid associated with username and password + --- + parameters: + - name: username + in: body + type: string + required: true + - name: password + in: body + type: string + required: true + responses: + 200: + description: User ID retrieved successfully. + schema: + type: object + properties: + user_id: + type: integer + example: 1 """ data = request.get_json() username = data.get("username") @@ -115,6 +278,35 @@ def fetch_userid(): def fetch_pet(): """ fetch pet from database + --- + parameters: + - name: pet_id + in: body + type: integer + required: true + responses: + 200: + description: Pet details retrieved successfully. + schema: + type: object + properties: + pet_details: + type: object + properties: + name: + type: string + age: + type: integer + gender: + type: string + breed: + type: string + type: + type: string + location: + type: string + photo_path: + type: string """ data = request.get_json() petid = data.get("pet_id") @@ -127,6 +319,29 @@ def fetch_pet(): def fetch_user(): """ fetch user from database + --- + parameters: + - name: user_id + in: body + type: integer + required: true + responses: + 200: + description: User details retrieved successfully. + schema: + type: object + properties: + user_details: + type: object + properties: + name: + type: string + age: + type: integer + location: + type: string + occupation: + type: string """ data = request.get_json() userid = data.get("user_id") @@ -139,6 +354,28 @@ def fetch_user(): def fetch_favorite_pet(): """ fetches all pets favorited by a user + --- + parameters: + - name: user_id + in: body + type: integer + required: true + responses: + 200: + description: List of favorited pets retrieved successfully. + schema: + type: array + items: + type: object + properties: + pet_id: + type: integer + pet_name: + type: string + pet_age: + type: integer + pet_breed: + type: string """ data = request.get_json() userid = data.get("user_id") @@ -153,6 +390,25 @@ def fetch_favorite_pet(): def fetch_allusers(): """ fetches all users in database + --- + responses: + 200: + description: All users retrieved successfully. + schema: + type: array + items: + type: object + properties: + user_id: + type: integer + user_name: + type: string + user_age: + type: integer + user_location: + type: string + user_occupation: + type: string """ allusers = databasefunctions.fetch_all_users() @@ -162,7 +418,40 @@ def fetch_allusers(): @app.route("/fetch_allpets", methods=["POST"]) def fetch_allpets(): """ - fetches all pets in database + fetches all pets in database + --- + responses: + 200: + description: All pets retrieved successfully. + schema: + type: array + items: + type: object + properties: + pet_id: + type: integer + example: 102 + name: + type: string + example: "Chuck" + age: + type: integer + example: 3 + gender: + type: string + example: "Female" + breed: + type: string + example: "Golden Retriever" + type: + type: string + example: "Dog" + location: + type: string + example: "New York" + photo_path: + type: string + example: "images/Chuck.jpg" """ allpets = databasefunctions.fetch_all_pets() diff --git a/Backend/database_files/__pycache__/databasefunctions.cpython-311.pyc b/Backend/database_files/__pycache__/databasefunctions.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b71b15dcaec75f9bc4c8e6000ce6de072a2934a8 GIT binary patch literal 12075 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 e3;QvP^m-Jw%7i}Z} literal 0 HcmV?d00001