From 73c626eada3bdaaf9abbd8c4f7ce870a3a810580 Mon Sep 17 00:00:00 2001 From: d3m0k1d Date: Mon, 24 Nov 2025 14:45:08 +0300 Subject: [PATCH] Add logic for delete handler --- backend/app/api/v1/posts.py | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/backend/app/api/v1/posts.py b/backend/app/api/v1/posts.py index ae81353..b594d15 100644 --- a/backend/app/api/v1/posts.py +++ b/backend/app/api/v1/posts.py @@ -1,7 +1,8 @@ -from typing import Optional +from typing import Optional, Sequence from fastapi import APIRouter, Depends, HTTPException, Query +from sqlalchemy import select, delete from sqlalchemy.ext.asyncio import AsyncSession -from app.schemas.posts import PostCreate, PostRead, PostRead +from app.schemas.posts import PostCreate, PostRead from app.db_engine import get_async_session from app.models.posts import Post @@ -15,9 +16,18 @@ router = APIRouter( @router.get("/") async def get_posts( - page: int = Query(1, ge=1), db: AsyncSession = Depends(get_async_session) + page: int = Query(1, ge=1), + page_size: int = Query(10, ge=1, le=100), + db: AsyncSession = Depends(get_async_session), ): - pass + offset = (page - 1) * page_size + + stmt = select(Post).order_by(Post.id).offset(offset).limit(page_size) + + result = await db.execute(stmt) + posts: Sequence[Post] = result.scalars().all() + + return posts @router.get("/{id}", response_model=PostRead) @@ -53,10 +63,13 @@ async def create_post( @router.put("/{id}") -async def update_post(id: int): +async def update_post(id: int, db: AsyncSession = Depends(get_async_session)): pass @router.delete("/{id}") -async def delete_post(id: int): - pass +async def delete_post(id: int, db: AsyncSession = Depends(get_async_session)): + stmt = delete(Post).where(Post.id == id) + await db.execute(stmt) + await db.commit() + return {"message": f"Post with id {id} deleted"}