diff --git a/modal_backend/routes/services.py b/modal_backend/routes/services.py index 291f914..7fafed0 100644 --- a/modal_backend/routes/services.py +++ b/modal_backend/routes/services.py @@ -38,6 +38,21 @@ async def create_service( return ServiceGet.model_validate(new_service) +@service.patch("/{id}", response_model=ServiceGet) +async def update_service( + id: int, + service_info: ServicePost, + user=Depends(UnionAuth(scopes=["modal.service.update"])), +) -> ServiceGet: + """ + Обновляет сервис по `id`. + + Scopes: `["modal.service.update"]` + """ + updated = await ServiceManager.update_service(db, id, service_info) + return ServiceGet.model_validate(updated) + + @service.delete("/{id}", response_model=StatusResponseModel) async def delete_service(id: int, user=Depends(UnionAuth(scopes=["modal.service.delete"]))) -> StatusResponseModel: """ diff --git a/modal_backend/utils/services.py b/modal_backend/utils/services.py index f14a8ea..d84713f 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 GroupPost, NoteTypePost, NotificationPost +from modal_backend.schemas.models import GroupPost, NoteTypePost, NotificationPost, ServicePost class NoteService: @@ -78,6 +78,12 @@ async def delete_service(cls, db: Session, id: int): status="Success", message="Service has been successfully deleted", ru="Сервис успешно удален" ) + @classmethod + async def update_service(cls, db: Session, id: int, service_info: ServicePost): + Service.get(session=db.session, id=id) + updated_service = Service.update(id, session=db.session, **service_info.model_dump()) + return updated_service + class GroupService: """