Skip to content

Latest commit

 

History

History
142 lines (110 loc) · 8.44 KB

TODO-StorageService.md

File metadata and controls

142 lines (110 loc) · 8.44 KB

Для реализации логики сервиса StorageService на основе предоставленной модели Storage, можно использовать следующие шаги. Этот план поможет вам создать надежный и функциональный сервис для работы с хранилищами:


1. Определить основные требования

  • CRUD-операции для управления хранилищами (Storage):
    • Создание нового хранилища.
    • Получение информации о конкретном хранилище.
    • Обновление данных о хранилище.
    • Удаление хранилища.
  • Взаимодействие с пользователями:
    • Назначение пользователей для управления хранилищем.
    • Отмена прав доступа для пользователей.
  • Взаимодействие с зонами (Zone):
    • Добавление зон в хранилище.
    • Получение списка всех зон для данного хранилища.
    • Удаление зон из хранилища.

2. Импортировать необходимые модули

  • Модель Storage.
  • SQLAlchemy для выполнения запросов к базе данных.
  • Flask-Login или Flask-JWT-Extended (если требуется проверка прав доступа).
  • Любые дополнительные утилиты для валидации данных.

3. Создать класс StorageService

  • Класс должен быть ответственным за работу с моделью Storage.

4. Реализовать методы создания хранилища

  • Создание нового хранилища:
    • Принять описание хранилища (необязательное поле).
    • Сохранить новое хранилище в базу данных.
    • Вернуть созданное хранилище.

5. Реализовать методы получения хранилищ

  • Получение хранилища по ID:
    • Проверить существование хранилища.
    • Вернуть данные о хранилище.
  • Получение всех хранилищ:
    • Вернуть список всех хранилищ.
  • Поиск хранилищ по описанию:
    • Фильтрация по части описания.
    • Вернуть соответствующий список хранилищ.

6. Реализовать методы обновления хранилища

  • Обновление данных о хранилище:
    • Проверить существование хранилища.
    • Обновить описание хранилища (если передано).
    • Сохранить изменения в базе данных.

7. Реализовать методы удаления хранилища

  • Удаление хранилища по ID:
    • Проверить существование хранилища.
    • Убедиться, что хранилище не содержит активных зон (или обработать этот случай).
    • Удалить хранилище из базы данных.

8. Реализовать методы управления пользователями

  • Назначение пользователей для управления хранилищем:
    • Проверить существование хранилища и пользователя.
    • Добавить пользователя в список менеджеров хранилища.
  • Отмена прав доступа для пользователей:
    • Проверить существование связи между пользователем и хранилищем.
    • Удалить пользователя из списка менеджеров.

9. Реализовать методы управления зонами

  • Добавление зоны в хранилище:
    • Проверить существование хранилища и зоны.
    • Добавить зону в список зон хранилища.
  • Получение списка всех зон для хранилища:
    • Вернуть список связанных зон.
  • Удаление зоны из хранилища:
    • Проверить существование связи между зоной и хранилищем.
    • Удалить зону из списка зон хранилища.

10. Добавить проверку прав доступа (опционально)

  • Если используется Flask-Login или Flask-JWT-Extended:
    • Проверить, имеет ли текущий пользователь права на выполнение операций.
    • Например, только администраторы могут создавать или удалять хранилища.
    • Только назначенные пользователи могут управлять конкретным хранилищем.

11. Добавить обработку исключений

  • Обработка ошибок базы данных (например, при попытке добавить дублирующееся хранилище).
  • Обработка ошибок валидации данных.
  • Обработка случаев, когда хранилище, пользователь или зона не найдены.

12. Написать unit-тесты

  • Тестирование каждого метода сервиса.
  • Проверка корректных случаев, граничных условий и ошибочных ситуаций.
  • Тестирование взаимодействия с пользователями и зонами.

13. Документировать класс и методы

  • Добавить docstrings для каждого метода.
  • Описать параметры, возвращаемые значения и возможные исключения.
  • Предоставить примеры использования.

14. Протестировать работу сервиса

  • Провести интеграционное тестирование.
  • Проверить производительность.
  • Выполнить stress-тестирование для оценки масштабируемости.

Примерная структура методов в классе StorageService

  1. create_storage(description) — Создание нового хранилища.
  2. get_storage_by_id(storage_id) — Получение хранилища по ID.
  3. get_all_storages() — Получение списка всех хранилищ.
  4. update_storage(storage_id, data) — Обновление данных о хранилище.
  5. delete_storage(storage_id) — Удаление хранилища.
  6. add_user_to_storage(storage_id, user_id) — Назначение пользователя для управления хранилищем.
  7. remove_user_from_storage(storage_id, user_id) — Отмена прав доступа для пользователя.
  8. add_zone_to_storage(storage_id, zone_id) — Добавление зоны в хранилище.
  9. get_zones_for_storage(storage_id) — Получение списка всех зон для хранилища.
  10. remove_zone_from_storage(storage_id, zone_id) — Удаление зоны из хранилища.

Эта структура позволит вам создать надежный сервис для работы с моделью Storage. Она легко расширяема и может быть адаптирована под будущие требования вашего проекта.