From 0ab17f3a99911a082ae65bd3ee261c976b1f50d5 Mon Sep 17 00:00:00 2001 From: IluaAir Date: Sat, 2 Aug 2025 18:22:01 +0300 Subject: [PATCH] add delete user endpoint --- src/api/v1/users.py | 6 ++++++ src/repository/users.py | 5 ++++- src/services/users.py | 4 ++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/api/v1/users.py b/src/api/v1/users.py index 41f2d87..eeb09fe 100644 --- a/src/api/v1/users.py +++ b/src/api/v1/users.py @@ -41,3 +41,9 @@ async def patch_user( updated_user = await db.user.update_one(id=id, data=update_data) await db.commit() return User.model_validate(updated_user) + + +@router.delete("/{id}") +async def delete_user(db: sessionDep, id: int, _: AdminUser): + await UserService(db).delete_user(id) + return {"message": "User deleted successfully"} \ No newline at end of file diff --git a/src/repository/users.py b/src/repository/users.py index bbe3233..f26c695 100644 --- a/src/repository/users.py +++ b/src/repository/users.py @@ -1,4 +1,4 @@ -from sqlalchemy import select +from sqlalchemy import delete, select from src.models import UsersORM from src.repository.base import BaseRepo @@ -12,3 +12,6 @@ class UsersRepo(BaseRepo): result = await self.session.execute(query) models = result.scalars().all() return models + + async def delete_one(self, id: int) -> None: + await self.session.execute(delete(self.model).where(self.model.id == id)) \ No newline at end of file diff --git a/src/services/users.py b/src/services/users.py index 5603371..770c697 100644 --- a/src/services/users.py +++ b/src/services/users.py @@ -26,3 +26,7 @@ class UserService(BaseService): 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] + + async def delete_user(self, id: int) -> None: + await self.session.user.delete_one(id=id) + await self.session.commit() \ No newline at end of file