diff --git a/modal_backend/routes/groups.py b/modal_backend/routes/groups.py index 6cededa..48896a5 100644 --- a/modal_backend/routes/groups.py +++ b/modal_backend/routes/groups.py @@ -45,3 +45,20 @@ async def delete_group(id: int, user=Depends(UnionAuth(scopes=["modal.group.dele Исключение **ObjectNotFound**, если `id` не найден """ return await GroupService.delete_group(db, id) + + +@group.patch("/{id}", response_model=GroupGet) +async def update_group( + id: int, group_info: GroupPost, user=Depends(UnionAuth(scopes=["modal.group.update"])) +) -> GroupGet: + """ + Обновляет данные о группе + + Scopes: `["modal.group.update"]` + + Исключение **ObjectNotFound**, если `id` не найден + + Исключение **AlreadyExists**, если изменений нет + """ + updated_group = await GroupService.update_group(db, id, group_info) + return GroupGet.model_validate(updated_group) diff --git a/modal_backend/utils/services.py b/modal_backend/utils/services.py index 6e02860..f14a8ea 100644 --- a/modal_backend/utils/services.py +++ b/modal_backend/utils/services.py @@ -3,7 +3,7 @@ from modal_backend.exceptions import AlreadyExists, ObjectNotFound from modal_backend.models.db import Group, ModalStatus, Note, NoteType, Service from modal_backend.schemas.base import StatusResponseModel -from modal_backend.schemas.models import NoteTypePost, NotificationPost +from modal_backend.schemas.models import GroupPost, NoteTypePost, NotificationPost class NoteService: @@ -99,3 +99,9 @@ async def delete_group(cls, db: Session, id: int): return StatusResponseModel( status="Success", message="Group has been successfully deleted", ru="Группа успешно удалена" ) + + @classmethod + async def update_group(cls, db: Session, id: int, group_info: GroupPost): + Group.get(session=db.session, id=id) + updated_group = Group.update(id, session=db.session, **group_info.model_dump()) + return updated_group