feat: ability to add and view blogs for a user
This commit is contained in:
+51
-21
@@ -2,6 +2,7 @@ from fastapi import FastAPI, Depends, HTTPException, status
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.security import OAuth2PasswordRequestForm
|
||||
from sqlalchemy.orm import Session
|
||||
from typing import Optional
|
||||
|
||||
from app.utils import create_access_token
|
||||
from . import schemas, crud
|
||||
@@ -34,35 +35,64 @@ def health_check():
|
||||
return {"Health": "Super Healthy!"}
|
||||
|
||||
|
||||
@app.post("/items/", response_model=schemas.Item)
|
||||
def create_item(item: schemas.Item, db: Session = Depends(get_db)):
|
||||
return crud.create_item(db, item)
|
||||
@app.post("/blogs/", response_model=schemas.Blog)
|
||||
def create_blog(
|
||||
blog: schemas.BlogCreate,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
return crud.create_blog(db, blog)
|
||||
|
||||
|
||||
@app.get("/items/", response_model=list[schemas.Item])
|
||||
def read_items(skip: int = 0, limit: int = 10, db: Session = Depends(get_db)):
|
||||
return crud.get_items(db, skip, limit)
|
||||
@app.get("/blogs/", response_model=list[schemas.Blog])
|
||||
def read_blogs(
|
||||
skip: int = 0,
|
||||
limit: int = 10,
|
||||
author_id: Optional[int] = None,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
return crud.get_blogs(
|
||||
db,
|
||||
skip=skip,
|
||||
limit=limit,
|
||||
author_id=author_id,
|
||||
)
|
||||
|
||||
|
||||
@app.get("/items/{item_id}", response_model=schemas.Item)
|
||||
def read_item(item_id: int, db: Session = Depends(get_db)):
|
||||
db_item = crud.get_item(db, item_id)
|
||||
if db_item is None:
|
||||
raise HTTPException(status_code=404, detail="Item not found")
|
||||
return db_item
|
||||
@app.get("/blogs/{blog_id}", response_model=schemas.Blog)
|
||||
def read_blog(
|
||||
blog_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
db_blog = crud.get_blog(db, blog_id)
|
||||
if not db_blog:
|
||||
raise HTTPException(status_code=404, detail="Blog not found")
|
||||
return db_blog
|
||||
|
||||
|
||||
@app.delete("/items/{item_id}", response_model=schemas.Item)
|
||||
def delete_item(item_id: int, db: Session = Depends(get_db)):
|
||||
item = crud.delete_item(db, item_id)
|
||||
if item is None:
|
||||
raise HTTPException(status_code=404, detail="Item not found")
|
||||
return item
|
||||
@app.put("/blogs/{blog_id}", response_model=schemas.Blog)
|
||||
def update_blog(
|
||||
blog_id: int,
|
||||
blog_in: schemas.BlogUpdate,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
updated = crud.update_blog(db, blog_id, blog_in)
|
||||
if not updated:
|
||||
raise HTTPException(status_code=404, detail="Blog not found")
|
||||
return updated
|
||||
|
||||
|
||||
@app.delete("/blogs/{blog_id}", response_model=schemas.Blog)
|
||||
def delete_blog(
|
||||
blog_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
deleted = crud.delete_blog(db, blog_id)
|
||||
if not deleted:
|
||||
raise HTTPException(status_code=404, detail="Blog not found")
|
||||
return deleted
|
||||
|
||||
|
||||
# Users
|
||||
|
||||
|
||||
@app.post("/login", response_model=schemas.Token)
|
||||
def user_login(
|
||||
form_data: OAuth2PasswordRequestForm = Depends(), db: Session = Depends(get_db)
|
||||
@@ -75,7 +105,7 @@ def user_login(
|
||||
headers={"WWW-Authenticate": "Bearer"},
|
||||
)
|
||||
access_token = create_access_token(data={"sub": user.username})
|
||||
return {"access_token": access_token, "token_type": "bearer"}
|
||||
return {"access_token": access_token, "token_type": "bearer", "user_id": user.id}
|
||||
|
||||
|
||||
@app.post("/register", response_model=schemas.UserOut)
|
||||
|
||||
Reference in New Issue
Block a user