From d3eba7744425b2bf41a2ab4889f5f2906cc2363b Mon Sep 17 00:00:00 2001 From: IluaAir Date: Sun, 27 Jul 2025 12:40:32 +0300 Subject: [PATCH] add get users --- src/api/dependacies/user_dep.py | 6 ++++-- src/api/v1/users.py | 8 +++++--- src/repository/users.py | 8 ++++++++ src/services/users.py | 6 +++++- 4 files changed, 22 insertions(+), 6 deletions(-) diff --git a/src/api/dependacies/user_dep.py b/src/api/dependacies/user_dep.py index b53deeb..aab3055 100644 --- a/src/api/dependacies/user_dep.py +++ b/src/api/dependacies/user_dep.py @@ -37,13 +37,15 @@ def get_current_active_user( ): if not current_user.is_active: raise HTTPException(status_code=400, detail="Inactive user") - return current_user + return current_user ActiveUser = Annotated[TokenData, Depends(get_current_active_user)] + async def get_admin_user(db: sessionDep, current_user: ActiveUser): await UserService(db).validate_admin_user(current_user.sub) return current_user -AdminUser = Annotated[TokenData, Depends(get_admin_user)] \ No newline at end of file + +AdminUser = Annotated[TokenData, Depends(get_admin_user)] diff --git a/src/api/v1/users.py b/src/api/v1/users.py index d02c581..fe9de56 100644 --- a/src/api/v1/users.py +++ b/src/api/v1/users.py @@ -1,7 +1,9 @@ from fastapi import APIRouter from src.api.dependacies.user_dep import ActiveUser, AdminUser +from src.api.dependacies.db_dep import sessionDep from src.core.settings import settings +from src.services.users import UserService router = APIRouter(prefix=settings.api.v1.users, tags=["Users"]) @@ -12,6 +14,6 @@ async def get_me(user: ActiveUser): @router.get("/") -async def get_all_users(user: AdminUser): - users = [{"id": 1, "name": "Alice"}, {"id": 2, "name": "Bob"}] - return {"users": users} +async def get_all_users(db: sessionDep, user: AdminUser): + users = await UserService(db).get_all_users() + return users diff --git a/src/repository/users.py b/src/repository/users.py index 873b0ba..bbe3233 100644 --- a/src/repository/users.py +++ b/src/repository/users.py @@ -1,6 +1,14 @@ +from sqlalchemy import select + from src.models import UsersORM from src.repository.base import BaseRepo class UsersRepo(BaseRepo): model = UsersORM + + async def get_all_users(self): + query = select(self.model) + result = await self.session.execute(query) + models = result.scalars().all() + return models diff --git a/src/services/users.py b/src/services/users.py index d65ecaa..c7e5164 100644 --- a/src/services/users.py +++ b/src/services/users.py @@ -21,4 +21,8 @@ class UserService(BaseService): user = await self.get_user_by_username_or_raise(username) if not user.is_superuser: raise HTTPException(status_code=403, detail="Admin access required") - return user \ No newline at end of file + return user + + async def get_all_users(self) -> list[User]: + users = await self.session.user.get_all_users() + return [User.model_validate(user) for user in users]