Skip to content

Commit 3a665a0

Browse files
committed
Add routes and Test
1 parent f4e3dd4 commit 3a665a0

File tree

9 files changed

+63
-90
lines changed

9 files changed

+63
-90
lines changed

.env.example

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ DB_NAME=fastapi
22
DB_HOST=localhost
33
DB_USER=root
44
DB_PASSWORD=
5+
DB_PORT=5432

app/crud.py

Lines changed: 0 additions & 28 deletions
This file was deleted.

app/database.py

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,17 @@
11
from sqlalchemy import create_engine
2-
from dotenv import load_dotenv
32
from sqlalchemy.orm import sessionmaker
4-
from sqlalchemy.ext.declarative import declarative_base
5-
import os
63

7-
load_dotenv()
84

9-
10-
DB_NAME = os.getenv("DB_NAME")
11-
DB_USER = os.getenv("DB_USER")
12-
DB_PASSWORD = os.getenv("DB_PASSWORD")
13-
DB_HOST = os.getenv("DB_HOST")
14-
15-
DATABASE_URL = f"postgresql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}/{DB_NAME}"
5+
DATABASE_URL = "sqlite:///../users.db"
166

177
engine = create_engine(DATABASE_URL)
188

199
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
2010

2111

22-
Base = declarative_base()
23-
24-
2512
def get_db():
2613
db = SessionLocal()
2714
try:
2815
yield db
2916
finally:
30-
db.close()
31-
17+
db.close()

app/main.py

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,49 @@
1-
from fastapi import FastAPI
2-
from .routers.user import router
3-
from .database import engine
1+
from fastapi import FastAPI, HTTPException, Depends
2+
from sqlalchemy.orm import Session
3+
from database import get_db
4+
from models import User
5+
from schema import UserCreate, UserUpdate
6+
47

58

69
app = FastAPI()
710

8-
app.include_router(router)
911

10-
#===========================#
12+
@app.get("/users/")
13+
def get_all_users(db: Session = Depends(get_db)):
14+
return db.query(User).all()
15+
16+
@app.get("/users/{user_id}")
17+
def get_user_by_email(user_id: int, db: Session = Depends(get_db)):
18+
user = db.query(User).filter(User.id == user_id).first()
19+
if user:
20+
return user
21+
raise HTTPException(status_code=404, detail="User not found")
22+
23+
24+
@app.post("/users/")
25+
def create_user(user: UserCreate, db: Session = Depends(get_db)):
26+
db_user = User(name=user.name, email=user.email, password=user.password)
27+
db.add(db_user)
28+
db.commit()
29+
db.refresh(db_user)
30+
return db_user
1131

12-
@app.on_event("startup")
13-
async def startup():
14-
await engine.connect()
15-
32+
@app.put("/users/{user_id}")
33+
def update_user_by_email(user_id: int, user: UserUpdate, db: Session = Depends(get_db)):
34+
db_user = db.query(User).filter(User.id == user_id).first()
35+
if not db_user:
36+
raise HTTPException(status_code=404, detail="User not found")
37+
db_user.name = user.name
38+
db_user.email = user.email
39+
db.commit()
40+
return {"message": "User updated successfully"}
1641

17-
@app.on_event("shutdown")
18-
async def shutdown():
19-
await engine.disconnect()
42+
@app.delete("/users/{user_id}")
43+
def delete_user_by_email(user_id: int, db: Session = Depends(get_db)):
44+
db_user = db.query(User).filter(User.id == user_id).first()
45+
if not db_user:
46+
raise HTTPException(status_code=404, detail="User not found")
47+
db.delete(db_user)
48+
db.commit()
49+
return {"message": "User deleted successfully"}

app/models.py

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,11 @@
1-
from pydantic import BaseModel
2-
from .database import Base
3-
from sqlalchemy import Column, String
1+
from sqlalchemy import Column, Integer, String
2+
from sqlalchemy.ext.declarative import declarative_base
43

5-
class UserCreate(BaseModel):
6-
name: str
7-
email: str
8-
password: str
9-
10-
11-
class UserUpdate(BaseModel):
12-
name: str
13-
email: str
14-
password: str
15-
164

5+
Base = declarative_base()
176
class User(Base):
187
__tablename__ = "users"
19-
20-
id = Column(primary_key=True)
21-
name = Column(String, nullable=False)
22-
email = Column(String, nullable=False)
23-
password = Column(String, nullable=False)
8+
id: int = Column(Integer, primary_key=True, index=True)
9+
name: str = Column(String(50), index=True)
10+
email: str = Column(String(50), unique=True, index=True)
11+
password: str = Column(String(50))

app/routers/__init__.py

Whitespace-only changes.

app/routers/user.py

Lines changed: 0 additions & 15 deletions
This file was deleted.

app/schema.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
from pydantic import BaseModel
2+
3+
4+
class UserCreate(BaseModel):
5+
name: str
6+
email: str
7+
password: str
8+
9+
class UserUpdate(BaseModel):
10+
name: str
11+
email: str

users.db

16 KB
Binary file not shown.

0 commit comments

Comments
 (0)