Files
python-hiring-task/app/routers/post.py
2025-07-03 10:01:56 +03:00

62 lines
1.5 KiB
Python

import uuid
from fastapi import APIRouter, Depends, HTTPException, status
from sqlalchemy.orm import Session
from app import database, schemas
from app.repositories import auth, post
from app.security import get_user, get_user_strict
router = APIRouter(prefix="/post", tags=["posts"])
get_db = database.get_db
@router.get("/all", response_model=list[schemas.PostView])
def get_all_posts(
user: schemas.User = Depends(get_user), db: Session = Depends(get_db)
):
return post.get_all_posts(user, db)
@router.post(
"/create",
response_model=schemas.PostView,
status_code=status.HTTP_201_CREATED,
)
def create_post(
content: schemas.PostCreate,
user: schemas.User = Depends(get_user_strict),
db: Session = Depends(get_db),
):
return post.create_post(user, content, db)
@router.post("/edit", response_model=schemas.PostView)
def edit_post(
info: schemas.PostEdit,
user: schemas.User = Depends(get_user_strict),
db: Session = Depends(get_db),
):
return post.edit_post(user, info, db)
@router.post("/delete", response_model=schemas.BaseResponse)
def delete_post(
info: schemas.PostAction,
user: schemas.User = Depends(get_user_strict),
db: Session = Depends(get_db),
):
return post.delete_post(user, info, db)
@router.post(
"/like", response_model=schemas.BaseResponse, name="Like or unlike post"
)
def like_post(
info: schemas.PostAction,
user: schemas.User = Depends(get_user_strict),
db: Session = Depends(get_db),
):
return post.toggle_like(user, info, db)