sql_app: another api app to test

In sql_app/main.py, new path fucntions are tested
	for database connections, quary.

Signed-off-by: HeshamTB <hishaminv@gmail.com>
This commit is contained in:
HeshamTB 2022-03-06 16:13:50 +03:00
parent b0dc22070e
commit 0d66c6f50f
Signed by: Hesham
GPG Key ID: 74876157D199B09E
4 changed files with 58 additions and 3 deletions

1
.gitignore vendored
View File

@ -4,3 +4,4 @@ server.key
server.orig.key server.orig.key
__pycache__ __pycache__
venv/ venv/
*.db

1
sql_app/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
__pycache__/

View File

@ -0,0 +1,53 @@
from fastapi import Depends, FastAPI, HTTPException
from sqlalchemy.orm import Session
from . import crud, models, schemas
from .database import SessionLocal, engine
models.Base.metadata.create_all(bind=engine)
app = FastAPI()
# Dependency
def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
@app.post("/users/", response_model=schemas.User)
def create_user(user: schemas.UserCreate, db: Session = Depends(get_db)):
db_user = crud.get_user_by_email(db, email=user.email)
if db_user:
raise HTTPException(status_code=400, detail="Email already registered")
return crud.create_user(db=db, user=user)
@app.get("/users/", response_model=list[schemas.User])
def read_users(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
users = crud.get_users(db, skip=skip, limit=limit)
return users
@app.get("/users/{user_id}", response_model=schemas.User)
def read_user(user_id: int, db: Session = Depends(get_db)):
db_user = crud.get_user(db, user_id=user_id)
if db_user is None:
raise HTTPException(status_code=404, detail="User not found")
return db_user
@app.post("/users/{user_id}/items/", response_model=schemas.IotEntity)
def create_item_for_user(
user_id: int, item: schemas.IotEntityCreate, db: Session = Depends(get_db)
):
return crud.create_user_item(db=db, item=item, user_id=user_id)
@app.get("/items/", response_model=list[schemas.IotEntity])
def read_items(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
items = crud.get_items(db, skip=skip, limit=limit)
return items

View File

@ -12,7 +12,7 @@ class User(Base):
hashed_password = Column(String) hashed_password = Column(String)
is_active = Column(Boolean, default=True) is_active = Column(Boolean, default=True)
items = relationship("Item", back_populates="owner") #items = relationship("Item", back_populates="owner")
class IotEntity(Base): class IotEntity(Base):
@ -20,6 +20,6 @@ class IotEntity(Base):
id = Column(Integer, primary_key=True, index=True) id = Column(Integer, primary_key=True, index=True)
description = Column(String, index=True) description = Column(String, index=True)
owner_id = Column(Integer, ForeignKey("users.id")) owner_id = Column(Integer, ForeignKey("user_accounts.id"))
owner = relationship("User", back_populates="items") #owner = relationship("User", back_populates="items")