From 1bd3a5e2f2a3d14990b81d4a4274246924a49d9d Mon Sep 17 00:00:00 2001
From: pratyushkrsahu <ps01598@surrey.ac.uk>
Date: Mon, 6 May 2024 22:48:39 +0100
Subject: [PATCH] Fixed the hardcoded database connection to .env files

---
 .env                    |  5 +++++
 admins_service/main.py  | 18 ++++++++++++------
 bikes_service/main.py   | 17 +++++++++++------
 booking_service/main.py | 16 +++++++++++-----
 rentals_service/main.py | 17 +++++++++++------
 requirements.txt        |  1 +
 reviews_service/main.py | 18 +++++++++++-------
 users_service/main.py   | 17 +++++++++++------
 8 files changed, 73 insertions(+), 36 deletions(-)
 create mode 100644 .env

diff --git a/.env b/.env
new file mode 100644
index 0000000..7382c15
--- /dev/null
+++ b/.env
@@ -0,0 +1,5 @@
+DB_HOST=database-1.cz0ucmk42cu5.us-east-1.rds.amazonaws.com
+DB_PORT=3306
+DB_USER=admin
+DB_PASSWORD=Test#321
+DB_DATABASE=cycle_connect
\ No newline at end of file
diff --git a/admins_service/main.py b/admins_service/main.py
index a929596..5c8ad8e 100644
--- a/admins_service/main.py
+++ b/admins_service/main.py
@@ -5,6 +5,8 @@ import sqlite3
 import mysql.connector   
 from pathlib import Path
 from typing import Optional, Tuple, List
+from dotenv import load_dotenv
+import os
 
 app = FastAPI()
 
@@ -45,16 +47,20 @@ app.add_middleware(
 #     database='your_database'
 # )
 
+
+
+load_dotenv()  # Take environment variables from .env.
+
 db_connection = mysql.connector.connect(
-    host='database-1.cz0ucmk42cu5.us-east-1.rds.amazonaws.com',  # or '127.0.0.1' for IPv4 loopback
-    port='3306',  # Specify the port number here
-    user='admin',
-    password='Test#321',
-    database='cycle_connect'
+    host=os.getenv('DB_HOST'),
+    port=os.getenv('DB_PORT'),
+    user=os.getenv('DB_USER'),
+    password=os.getenv('DB_PASSWORD'),
+    database=os.getenv('DB_DATABASE')
 )
-
 cursor = db_connection.cursor()
 
+
 # # Create the Admins table if it doesn't exist
 # cursor.execute('''
 #     CREATE TABLE IF NOT EXISTS Admins (
diff --git a/bikes_service/main.py b/bikes_service/main.py
index b229410..f9b6ec3 100644
--- a/bikes_service/main.py
+++ b/bikes_service/main.py
@@ -6,7 +6,9 @@ from typing import List
 import sqlite3
 from pathlib import Path
 from typing import Optional
-import mysql.connector      
+import mysql.connector 
+from dotenv import load_dotenv
+import os     
 
 app = FastAPI()
 
@@ -34,16 +36,19 @@ app.add_middleware(
 #     database='your_database'
 # )
 
+load_dotenv()  # Take environment variables from .env.
+
 db_connection = mysql.connector.connect(
-    host='database-1.cz0ucmk42cu5.us-east-1.rds.amazonaws.com',  # or '127.0.0.1' for IPv4 loopback
-    port='3306',  # Specify the port number here
-    user='admin',
-    password='Test#321',
-    database='cycle_connect'
+    host=os.getenv('DB_HOST'),
+    port=os.getenv('DB_PORT'),
+    user=os.getenv('DB_USER'),
+    password=os.getenv('DB_PASSWORD'),
+    database=os.getenv('DB_DATABASE')
 )
 cursor = db_connection.cursor()
 
 
+
 # Bike model
 class Bike(BaseModel):
     model: str
diff --git a/booking_service/main.py b/booking_service/main.py
index ce274e8..75700e5 100644
--- a/booking_service/main.py
+++ b/booking_service/main.py
@@ -9,6 +9,9 @@ import sqlite3
 from pathlib import Path
 from typing import List
 import mysql.connector 
+from dotenv import load_dotenv
+import os
+
 
 app = FastAPI()
 
@@ -21,12 +24,15 @@ app.add_middleware(
     allow_headers=["*"],
 )
 
+
+load_dotenv()  # Take environment variables from .env.
+
 db_connection = mysql.connector.connect(
-    host='database-1.cz0ucmk42cu5.us-east-1.rds.amazonaws.com',  # or '127.0.0.1' for IPv4 loopback
-    port='3306',  # Specify the port number here
-    user='admin',
-    password='Test#321',
-    database='cycle_connect'
+    host=os.getenv('DB_HOST'),
+    port=os.getenv('DB_PORT'),
+    user=os.getenv('DB_USER'),
+    password=os.getenv('DB_PASSWORD'),
+    database=os.getenv('DB_DATABASE')
 )
 cursor = db_connection.cursor()
 
diff --git a/rentals_service/main.py b/rentals_service/main.py
index b1c8594..eca1a8a 100644
--- a/rentals_service/main.py
+++ b/rentals_service/main.py
@@ -8,6 +8,8 @@ from typing import Optional
 from fastapi import HTTPException
 import mysql.connector   
 from decimal import Decimal
+from dotenv import load_dotenv
+import os
 
 app = FastAPI()
 
@@ -20,17 +22,20 @@ app.add_middleware(
     allow_headers=["*"],
 )
 
+
+load_dotenv()  # Take environment variables from .env.
+
 db_connection = mysql.connector.connect(
-    host='database-1.cz0ucmk42cu5.us-east-1.rds.amazonaws.com',  # or '127.0.0.1' for IPv4 loopback
-    port='3306',  # Specify the port number here
-    user='admin',
-    password='Test#321',
-    database='cycle_connect'
+    host=os.getenv('DB_HOST'),
+    port=os.getenv('DB_PORT'),
+    user=os.getenv('DB_USER'),
+    password=os.getenv('DB_PASSWORD'),
+    database=os.getenv('DB_DATABASE')
 )
-
 cursor = db_connection.cursor()
 
 
+
 # Rental model
 class Rental(BaseModel):
     booking_id: int  
diff --git a/requirements.txt b/requirements.txt
index 14602c3..a7bfeb9 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -34,3 +34,4 @@ watchfiles==0.21.0
 websockets==12.0
 mysql-connector-python
 apscheduler
+python-dotenv
diff --git a/reviews_service/main.py b/reviews_service/main.py
index bba54cf..bf5ff0b 100644
--- a/reviews_service/main.py
+++ b/reviews_service/main.py
@@ -5,7 +5,9 @@ from typing import List
 import sqlite3
 from pathlib import Path
 from typing import Optional
-import mysql.connector  
+import mysql.connector
+from dotenv import load_dotenv
+import os  
 
 app = FastAPI()
 # Allow requests from all origins
@@ -19,17 +21,19 @@ app.add_middleware(
 
 
 
+load_dotenv()  # Take environment variables from .env.
+
 db_connection = mysql.connector.connect(
-    host='database-1.cz0ucmk42cu5.us-east-1.rds.amazonaws.com',  # or '127.0.0.1' for IPv4 loopback
-    port='3306',  # Specify the port number here
-    user='admin',
-    password='Test#321',
-    database='cycle_connect'
+    host=os.getenv('DB_HOST'),
+    port=os.getenv('DB_PORT'),
+    user=os.getenv('DB_USER'),
+    password=os.getenv('DB_PASSWORD'),
+    database=os.getenv('DB_DATABASE')
 )
-
 cursor = db_connection.cursor()
 
 
+
 # Review model
 class Review(BaseModel):
     user_id: int
diff --git a/users_service/main.py b/users_service/main.py
index d4a7d25..956c480 100644
--- a/users_service/main.py
+++ b/users_service/main.py
@@ -7,6 +7,9 @@ import mysql.connector
 from pathlib import Path
 from typing import Optional
 from datetime import datetime
+from dotenv import load_dotenv
+import os
+
 
 app = FastAPI()
 
@@ -21,14 +24,16 @@ app.add_middleware(
 
 
 
+
+load_dotenv()  # Take environment variables from .env.
+
 db_connection = mysql.connector.connect(
-    host='database-1.cz0ucmk42cu5.us-east-1.rds.amazonaws.com',  # or '127.0.0.1' for IPv4 loopback
-    port='3306',  # Specify the port number here
-    user='admin',
-    password='Test#321',
-    database='cycle_connect'
+    host=os.getenv('DB_HOST'),
+    port=os.getenv('DB_PORT'),
+    user=os.getenv('DB_USER'),
+    password=os.getenv('DB_PASSWORD'),
+    database=os.getenv('DB_DATABASE')
 )
-
 cursor = db_connection.cursor()
 
 class User(BaseModel):
-- 
GitLab