Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions modal_backend/routes/groups.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
13 changes: 13 additions & 0 deletions modal_backend/routes/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
17 changes: 17 additions & 0 deletions modal_backend/utils/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -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


Expand Down Expand Up @@ -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:
"""
Expand All @@ -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="Группа успешно удалена"
)
Loading