Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Добавить метод get_all_with_users (change_schema_response недопустимо затратный) #84

Open
ArtemBalandin81 opened this issue Jul 10, 2024 · 0 comments
Assignees
Labels
refactoring Refactorings and optimizations

Comments

@ArtemBalandin81
Copy link
Owner

WHY

Добавить новый метод в репозиторий, который снизит нагрузку к БД для последующего представления в апи

HOW TO DO

Функций change_schema_response, которая используется в async def perform_changed_schema - служащая для изменения отражения в апи ответа моделей (пользователя по email, тех.процессов по их имени, а не коду и т.п.) делает множественные запросы к БД, чтобы получить пользователя. ЭТО НЕПРАВИЛЬНО

  • Нужно избавиться от множественных запросов и брать инфу о пользователе из одного запроса
  • Переделать (дополнить лучше) функцию get_all репозитория задач и простоев, чтобы наряду со списком всех моделей получать и информацию о пользователях, которую уже можно было бы в дальнейшем использовать.
    async def change_schema_response(self, suspension: Suspension, user: User = None) -> dict:
        """Изменяет и добавляет поля в словарь в целях наглядного представления в ответе api."""
        if user is None:
            user: User = await self._users_repository.get(suspension.user_id)  # todo очень затратно!
            await log.ainfo("{}".format(USER_NOT_PROVIDED), user=user)
        suspension_to_dict = suspension.__dict__
        suspension_to_dict["user_email"] = user.email
        suspension_to_dict["business_process"] = TechProcess(str(suspension.tech_process)).name
        suspension_to_dict["extra_files"] = []
        return suspension_to_dict
@ArtemBalandin81 ArtemBalandin81 self-assigned this Jul 10, 2024
@ArtemBalandin81 ArtemBalandin81 added the refactoring Refactorings and optimizations label Jul 10, 2024
@ArtemBalandin81 ArtemBalandin81 changed the title Добавить метод get_all_with_users Добавить метод get_all_with_users (change_schema_response недопустимо затратный) Nov 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
refactoring Refactorings and optimizations
Projects
None yet
Development

No branches or pull requests

1 participant