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