feat: ability to add and view blogs for a user

This commit is contained in:
2025-06-24 18:54:48 -04:00
parent 07c0977aa7
commit 7da38ddd8c
26 changed files with 1553 additions and 142 deletions
+51 -21
View File
@@ -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)