From d9b09657b02c11bc297539f7f393384d95221568 Mon Sep 17 00:00:00 2001
From: Navin Chandra <nc01009@surrey.ac.uk>
Date: Tue, 30 Apr 2024 04:28:10 +0530
Subject: [PATCH] fixed code for user microservice

---
 microservices/bikes_service/bikes.py |   1 +
 microservices/users_service/bikes.db | Bin 0 -> 8192 bytes
 microservices/users_service/main.py  | 147 +++++++++++++++++++++++++++
 text_cmd                             |   1 +
 4 files changed, 149 insertions(+)
 create mode 100644 microservices/users_service/bikes.db
 create mode 100644 text_cmd

diff --git a/microservices/bikes_service/bikes.py b/microservices/bikes_service/bikes.py
index 80520b5..5b09376 100644
--- a/microservices/bikes_service/bikes.py
+++ b/microservices/bikes_service/bikes.py
@@ -34,6 +34,7 @@ class Bike(BaseModel):
     price_per_hour: float
     last_maintenance_date: str
     maintenance_history: str
+    
 
 
 # Routes
diff --git a/microservices/users_service/bikes.db b/microservices/users_service/bikes.db
new file mode 100644
index 0000000000000000000000000000000000000000..84b1acb9efcb41e46f039ef3d17b61e2da479c4e
GIT binary patch
literal 8192
zcmeH~Pm9w)7>6g_f>f|8UJAm(ND*DN>m-vlNl#lfNO4!RMsQDIn#^vd<WEUbchBO<
zgP+0g=a+C2lco)VCr`dF$z<}IfoJBqy&vA6iJarhB#l^(DY}ak1)XAy5b9K~{FJ50
zv0KfHPx1e^>Y$U)-|om=O8+O44-^;x17H9QfB`T72EYIq00UqE41j@uZQ#p2<<?*@
zP`)1IY#H*88Beov=)7FmGsnix?8TXl%LqTdjjP(oeXj8F{H<fZwio!_VtzhbT;MnM
z#k0LlF^f2M>`zV;uUVE|C#m0xdBjB6%GN;=b2r{ZOP;otyp;PQcRiN+u81#_)^f_P
zM3$#47fI~;Om_3H<ZYb!x!oKjWLfTp$(4w=i{;smi{8B3KSqb&5AXMX$O#k}00UqE
z41fVJ00zJS7ytuc01W)!1~%OudN_POq?BeXWr2Gw!YqmF4wo&xGCt)uELw;B#7m;5
zs$m$WX<C-`L>6uas*fic(ex3aBdTImooZxC$RDDcgC2S`qy;t-Uch+hu4JQ})m+20
zs(hb38S7M2Ez@YA<;)_gw#5)k%&9)!B{xyp>7fV1Q9)iY*_vmO$b%Xy&tHW5OiBBV
zZ866a!>pN_g^4w#ySLqm)=Cc@Rm>!i-F(7pqN>rAjP{9IAyO(JEu!44Z;2*W3*62v
HwI=!n<z>wi

literal 0
HcmV?d00001

diff --git a/microservices/users_service/main.py b/microservices/users_service/main.py
index e69de29..f95802c 100644
--- a/microservices/users_service/main.py
+++ b/microservices/users_service/main.py
@@ -0,0 +1,147 @@
+from fastapi import FastAPI, HTTPException
+from pydantic import BaseModel
+from typing import List
+import sqlite3
+from typing import Optional
+
+app = FastAPI()
+
+# SQLite connection
+conn = sqlite3.connect('bikes.db')
+cursor = conn.cursor()
+
+# Create the Users table if it doesn't exist
+cursor.execute('''
+    CREATE TABLE IF NOT EXISTS Users (
+        user_id INTEGER PRIMARY KEY,
+        username TEXT,
+        password TEXT,
+        email TEXT,
+        phone_number TEXT,
+        credit_card_info TEXT,
+        registration_date DATETIME,
+        last_login DATETIME
+    )
+''')
+conn.commit()
+
+
+# User model
+class User(BaseModel):
+    username: str
+    password: str
+    email: str
+    phone_number: str
+    credit_card_info: Optional[str]
+    registration_date: str
+    last_login: Optional[str]
+
+
+class UserResponse(BaseModel):
+    user_id: int
+    username: str
+    email: str
+    phone_number: str
+    registration_date: str
+
+
+# Modify the read_users() function to return a list of UserResponse objects
+@app.get("/users/", response_model=List[UserResponse])
+async def read_users():
+    cursor.execute('SELECT user_id, username, email, phone_number, registration_date FROM Users')
+    print("got record")
+    users = cursor.fetchall()
+    user_objects = []
+    for user in users:
+        user_obj = UserResponse(
+            user_id=user[0],
+            username=user[1],
+            email=user[2],
+            phone_number=user[3],
+            registration_date=user[4]
+        )
+        user_objects.append(user_obj)
+    return user_objects
+
+# Routes
+@app.post("/users/", response_model=User)
+async def create_user(user: User):
+    print('hit')
+    cursor.execute('''
+        INSERT INTO Users 
+        (username, password, email, phone_number, credit_card_info, registration_date, last_login) 
+        VALUES (?, ?, Optional[str]?, ?, ?, ?, ?)
+    ''', (
+        user.username, user.password, user.email, user.phone_number,
+        user.credit_card_info, user.registration_date, user.last_login
+    ))
+    conn.commit()
+    return user
+
+
+# @app.get("/users/", response_model=List[User])
+# async def read_users():
+#     cursor.execute('SELECT * FROM Users')
+#     print("got record")
+#     users = cursor.fetchall()
+#     return users
+
+# @app.get("/users/", response_model=List[User])
+# async def read_users():
+#     cursor.execute('SELECT * FROM Users')
+#     print("got record")
+#     users = cursor.fetchall()
+#     # Convert each row into a dictionary
+#     user_dicts = []
+#     for user in users:
+#         # user_dict = {
+#         #     "user_id": user[0],
+#         #     "username": user[1],
+#         #     # "password": user[2],
+#         #     "email": user[3],
+#         #     "phone_number": user[4],
+#         #     # "credit_card_info": user[5],
+#         #     "registration_date": user[6],
+#         #     # "last_login": user[7]
+#         # }
+#         user_dict = {
+#             "user_id": user[0],
+#             "username": user[1],
+#             "email": user[2],
+#             "phone_number": user[3],
+#             "registration_date": user[4],
+#             # "last_login": user[7]
+#         }
+#         user_dicts.append(user_dict)
+#     return user_dicts
+
+
+@app.get("/users/{user_id}", response_model=User)
+async def read_user(user_id: int):
+    cursor.execute('SELECT * FROM Users WHERE user_id = ?', (user_id,))
+    user = cursor.fetchone()
+    if user is None:
+        raise HTTPException(status_code=404, detail="User not found")
+    return user
+
+
+@app.put("/users/{user_id}", response_model=User)
+async def update_user(user_id: int, user: User):
+    cursor.execute('''
+        UPDATE Users 
+        SET username = ?, password = ?, email = ?, phone_number = ?, 
+        credit_card_info = ?, registration_date = ?, last_login = ?
+        WHERE user_id = ?
+    ''', (
+        user.username, user.password, user.email, user.phone_number,
+        user.credit_card_info, user.registration_date, user.last_login, user_id
+    ))
+    conn.commit()
+    return user
+
+
+@app.delete("/users/{user_id}")
+async def delete_user(user_id: int):
+    cursor.execute('DELETE FROM Users WHERE user_id = ?', (user_id,))
+    conn.commit()
+    return {"message": "User deleted successfully"}
diff --git a/text_cmd b/text_cmd
new file mode 100644
index 0000000..76ea2df
--- /dev/null
+++ b/text_cmd
@@ -0,0 +1 @@
+uvicorn main:app --reload
\ No newline at end of file
-- 
GitLab