diff --git a/modal_backend/routes/groups.py b/modal_backend/routes/groups.py index ab823a9..6cededa 100644 --- a/modal_backend/routes/groups.py +++ b/modal_backend/routes/groups.py @@ -3,6 +3,7 @@ from fastapi_sqlalchemy import db from modal_backend.models.db import Group +from modal_backend.schemas.base import StatusResponseModel from modal_backend.schemas.models import GroupGet, GroupPost from modal_backend.settings import Settings, get_settings from modal_backend.utils.services import GroupService @@ -32,3 +33,15 @@ async def get_groups(user=Depends(UnionAuth())) -> list[GroupGet]: """ groups = Group.query(session=db.session).all() return [GroupGet.model_validate(group) for group in groups] + + +@group.delete("/{id}", response_model=StatusResponseModel) +async def delete_group(id: int, user=Depends(UnionAuth(scopes=["modal.group.delete"]))) -> StatusResponseModel: + """ + Удаляет группу из базы данных + + Scopes: `["modal.group.delete"]` + + Исключение **ObjectNotFound**, если `id` не найден + """ + return await GroupService.delete_group(db, id) diff --git a/modal_backend/routes/services.py b/modal_backend/routes/services.py index a1fb49e..291f914 100644 --- a/modal_backend/routes/services.py +++ b/modal_backend/routes/services.py @@ -3,6 +3,7 @@ from fastapi_sqlalchemy import db from modal_backend.models.db import Service +from modal_backend.schemas.base import StatusResponseModel from modal_backend.schemas.models import ServiceGet, ServicePost from modal_backend.settings import Settings, get_settings from modal_backend.utils.services import ServiceManager @@ -35,3 +36,15 @@ async def create_service( """ new_service = await ServiceManager.create_service(db, **service_info.model_dump()) return ServiceGet.model_validate(new_service) + + +@service.delete("/{id}", response_model=StatusResponseModel) +async def delete_service(id: int, user=Depends(UnionAuth(scopes=["modal.service.delete"]))) -> StatusResponseModel: + """ + Удаляет сервис из базы данных + + Scopes: `["modal.service.delete"]` + + Исключение **ObjectNotFound**, если `id` не найден + """ + return await ServiceManager.delete_service(db, id) diff --git a/modal_backend/utils/services.py b/modal_backend/utils/services.py index d01d90d..e29eed5 100644 --- a/modal_backend/utils/services.py +++ b/modal_backend/utils/services.py @@ -2,6 +2,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 @@ -61,6 +62,14 @@ async def create_service(cls, db: Session, service_id: int, name: str): new_service = Service.create(session=db.session, service_id=service_id, name=name) return new_service + @classmethod + async def delete_service(cls, db: Session, id: int): + Service.get(session=db.session, id=id) + Service.delete(session=db.session, id=id) + return StatusResponseModel( + status="Success", message="Service has been successfully deleted", ru="Сервис успешно удален" + ) + class GroupService: """ @@ -74,3 +83,11 @@ async def create_group(cls, db: Session, group_id: int, name: str): raise AlreadyExists(Group, group_id) new_group = Group.create(session=db.session, group_id=group_id, name=name) return new_group + + @classmethod + async def delete_group(cls, db: Session, id: int): + Group.get(session=db.session, id=id) + Group.delete(session=db.session, id=id) + return StatusResponseModel( + status="Success", message="Group has been successfully deleted", ru="Группа успешно удалена" + )