feat: add page, limit

This commit is contained in:
TheNoxium 2025-05-23 12:41:32 +05:00
parent c3c421f66f
commit e47e449a36
2 changed files with 24 additions and 7 deletions

View File

@ -1,8 +1,9 @@
from typing import Optional from typing import Optional
import math
from datetime import datetime, timezone from datetime import datetime, timezone
from sqlalchemy import insert, select from sqlalchemy import insert, select, func
from sqlalchemy.ext.asyncio import AsyncConnection from sqlalchemy.ext.asyncio import AsyncConnection
from enum import Enum from enum import Enum
@ -11,20 +12,34 @@ from api.db.tables.account import account_table
from api.schemas.account.account import User from api.schemas.account.account import User
from api.schemas.endpoints.account import UserUpdate, Role, Status from api.schemas.endpoints.account import UserUpdate, Role, Status
async def get_all_users_login_and_id(connection: AsyncConnection) -> Optional[User]: async def get_all_users_login_and_id(connection: AsyncConnection,page,limit) -> Optional[User]:
""" """
Получает id и login всех юзеров Получает id и login всех юзеров
""" """
query = select(account_table.c.id, account_table.c.login) first_user = page*limit-(limit-1)
last_user = first_user+(limit-1)
query = select(account_table.c.id, account_table.c.login).where(account_table.c.id.between(first_user, last_user ))
# Выполняем запрос
result = await connection.execute(query) result = await connection.execute(query)
# Получаем все результаты
users = result.fetchall() users = result.fetchall()
user_list = [{'id': user.id, 'login': user.login} for user in users] user_list = [{'id': user.id, 'login': user.login} for user in users]
count_query = select(func.count()).select_from(account_table)
count_result = await connection.execute(count_query)
amount_count = count_result.scalar()
amount_pages = math.ceil(amount_count / limit)
return {
'users': user_list,
'amount_count': amount_count,
'amount_pages': amount_pages
}
return user_list return user_list

View File

@ -30,10 +30,12 @@ api_router = APIRouter(
) )
@api_router.get("/") @api_router.get("")
async def get_all_account( async def get_all_account(
request: Request, request: Request,
page: int = 3,
limit: int = 10,
connection: AsyncConnection = Depends(get_connection_dep) connection: AsyncConnection = Depends(get_connection_dep)
): ):
@ -41,7 +43,7 @@ async def get_all_account(
current_user = request.state.current_user current_user = request.state.current_user
authorize_user = await db_user_role_validation(connection, current_user) authorize_user = await db_user_role_validation(connection, current_user)
user_list = await get_all_users_login_and_id(connection) user_list = await get_all_users_login_and_id(connection,page,limit)
if user_list is None: if user_list is None:
raise HTTPException( raise HTTPException(