From 774aacef195466c10bf532442e51f58d7b21ac6d Mon Sep 17 00:00:00 2001 From: Inohara Date: Mon, 28 Oct 2024 13:55:17 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=B0=D0=B3=D0=B8=D0=BD=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20(=D0=BD=D0=B0=D0=B4=D0=B5=D1=8E=D1=81=D1=8C=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE=D0=B5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/repositories/experiment_data_repos.py | 10 ++++++++++ network/routes/experiment_data_router.py | 21 ++++++++++++--------- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/db/repositories/experiment_data_repos.py b/db/repositories/experiment_data_repos.py index bd787d2..cfe3333 100644 --- a/db/repositories/experiment_data_repos.py +++ b/db/repositories/experiment_data_repos.py @@ -12,3 +12,13 @@ async def get_exp_data_by_file_id(file_id: str) -> Sequence[ExperimentData]: select(ExperimentData).where(ExperimentData.file_id == file_id) ) return result.scalars().all() + + +async def get_all_exp_data(page: int, page_size: int) -> Sequence[ExperimentData]: + async with async_session_postgres() as session: + offset = (page - 1) * page_size + + result = await session.execute( + select(ExperimentData).offset(offset).limit(page_size) + ) + return result.scalars().all() diff --git a/network/routes/experiment_data_router.py b/network/routes/experiment_data_router.py index b18b20a..b4fe05e 100644 --- a/network/routes/experiment_data_router.py +++ b/network/routes/experiment_data_router.py @@ -1,8 +1,10 @@ -from fastapi import APIRouter, HTTPException +import math + +from fastapi import APIRouter, HTTPException, Query from db.crud import * from db.models import ExperimentData -from db.repositories import get_exp_data_by_file_id +from db.repositories import get_exp_data_by_file_id, get_all_exp_data from network.schemas import ExperimentDataBody router = APIRouter() @@ -26,14 +28,15 @@ async def create_experiment_data(body: ExperimentDataBody): @router.get('/all') -async def get_all_experiment_data(): +async def get_all_experiment_data(page: int = Query(ge=1, default=1), + size: int = Query(ge = 1, le=100, default=15)): try: - result = await get_all(ExperimentData) - - if result is not None: - return result - else: - return {"message": "Нет записей в "} + result = await get_all_exp_data(page, size) + return { + "items": result, + "page": page, + "size": size, + } except Exception as e: raise HTTPException(status_code=500, detail=f"An error occurred: {str(e)}")