diff --git a/microservices/bikes_service/bikes.py b/microservices/bikes_service/bikes.py index 80520b5d691db6bcc2e2a00e8bb7c998aed5931d..5b09376eff2362bc233bd990046c6f04d2ff031e 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 Binary files /dev/null and b/microservices/users_service/bikes.db differ diff --git a/microservices/users_service/main.py b/microservices/users_service/main.py index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..f95802ca91c65d956255e5094e462061f8905d8b 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 0000000000000000000000000000000000000000..76ea2dfabb42ced29be00701422d3be1adb8f576 --- /dev/null +++ b/text_cmd @@ -0,0 +1 @@ +uvicorn main:app --reload \ No newline at end of file