Skip to content
Snippets Groups Projects

fixed code for user microservice

parent b737411a
No related branches found
No related tags found
No related merge requests found
...@@ -34,6 +34,7 @@ class Bike(BaseModel): ...@@ -34,6 +34,7 @@ class Bike(BaseModel):
price_per_hour: float price_per_hour: float
last_maintenance_date: str last_maintenance_date: str
maintenance_history: str maintenance_history: str
# Routes # Routes
......
File added
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"}
uvicorn main:app --reload
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment