fix: fixed attribute removing from module

This commit is contained in:
2025-11-02 12:29:18 +04:00
parent 2700538945
commit be878717e5
3 changed files with 15 additions and 23 deletions

View File

@ -79,24 +79,26 @@ async def delete_module(
@router.post( @router.post(
"/attribute", "/{moduleId}/attribute/{attributeId}",
response_model=AddAttributeResponse, response_model=AddAttributeResponse,
operation_id="add_attribute_to_module", operation_id="add_attribute_to_module",
) )
async def add_attribute_to_module( async def add_attribute_to_module(
session: SessionDependency, session: SessionDependency,
request: AddAttributeRequest, module_id: int = Path(alias="moduleId"),
attribute_id: int = Path(alias="attributeId"),
): ):
return await ModuleService(session).add_attribute(request) return await ModuleService(session).add_attribute(module_id, attribute_id)
@router.delete( @router.delete(
"/attribute", "/{moduleId}/attribute/{attributeId}",
response_model=DeleteAttributeResponse, response_model=DeleteAttributeResponse,
operation_id="remove_attribute_from_module", operation_id="remove_attribute_from_module",
) )
async def remove_attribute_from_module( async def remove_attribute_from_module(
session: SessionDependency, session: SessionDependency,
request: DeleteAttributeRequest, module_id: int = Path(alias="moduleId"),
attribute_id: int = Path(alias="attributeId"),
): ):
return await ModuleService(session).delete_attribute(request) return await ModuleService(session).delete_attribute(module_id, attribute_id)

View File

@ -45,16 +45,6 @@ class UpdateModuleCommonInfoSchema(BaseSchema):
# region Requests # region Requests
class AddAttributeRequest(BaseSchema):
attribute_id: int
module_id: int
class DeleteAttributeRequest(BaseSchema):
attribute_id: int
module_id: int
class CreateModuleRequest(BaseSchema): class CreateModuleRequest(BaseSchema):
entity: CreateModuleSchema entity: CreateModuleSchema

View File

@ -69,25 +69,25 @@ class ModuleService(
raise ForbiddenException("Нельзя менять встроенный модуль") raise ForbiddenException("Нельзя менять встроенный модуль")
return True return True
async def add_attribute(self, request: AddAttributeRequest) -> AddAttributeResponse: async def add_attribute(self, module_id: int, attribute_id: int) -> AddAttributeResponse:
module, attribute = await self._get_module_and_attr_from_request(request) module, attribute = await self._get_module_and_attr_from_request(module_id, attribute_id)
await self.repository.add_attribute_to_module(module, attribute) await self.repository.add_attribute_to_module(module, attribute)
return AddAttributeResponse(message="Аттрибут успешно добавлен к модулю") return AddAttributeResponse(message="Аттрибут успешно добавлен к модулю")
async def delete_attribute( async def delete_attribute(
self, request: DeleteAttributeRequest self, module_id: int, attribute_id: int
) -> DeleteAttributeResponse: ) -> DeleteAttributeResponse:
module, attribute = await self._get_module_and_attr_from_request(request) module, attribute = await self._get_module_and_attr_from_request(module_id, attribute_id)
await self.repository.delete_attribute_from_module(module, attribute) await self.repository.delete_attribute_from_module(module, attribute)
return DeleteAttributeResponse(message="Аттрибут успешно удален из модуля") return DeleteAttributeResponse(message="Аттрибут успешно удален из модуля")
async def _get_module_and_attr_from_request( async def _get_module_and_attr_from_request(
self, request: AddAttributeRequest | DeleteAttributeRequest self, module_id: int, attribute_id: int,
) -> tuple[Module, Attribute]: ) -> tuple[Module, Attribute]:
module = await self.repository.get_by_id(request.module_id) module = await self.repository.get_by_id(module_id)
if module.is_built_in: if module.is_built_in:
raise ForbiddenException("Нельзя менять встроенный модуль") raise ForbiddenException("Нельзя менять встроенный модуль")
attr_repo = AttributeRepository(self.repository.session) attr_repo = AttributeRepository(self.repository.session)
attribute = await attr_repo.get_by_id(request.attribute_id) attribute = await attr_repo.get_by_id(attribute_id)
return module, attribute return module, attribute