У меня есть два каталога хранилища и пользователя, у меня есть ситуация, когда мне нужно вызвать метод в репозитории каталога из пользовательского репо, это хорошая практика или есть лучший способ?Вызов репозитория из репозитория
ответ
Вы не должны обработки этих видов проверок авторизации в ваших репозиториях. Бизнес-правило, такое как «Этот пользователь требует, чтобы комментарии X были опубликованы» на самом деле не является репозиториемным запросом, это свойство вашего Пользователя.
Кроме того, вызовы авторизации выполняются очень часто в приложении, и вы действительно не хотите ударять свою базу данных каждый раз, когда требуется проверка.
Вы должны правильно загрузить эти разрешения в ваш объект пользователя, который затем сохраняется в кэше для текущего запроса, и использовать свой домен:
public class Service {
public void Save(Post post)
{
if(User.GetCurrentUser().HasEnoughCommentsToPost())
postRepository.Add(post);
}
}
Я хотел бы сослаться на другой репозитории в верхнем слое, например, как слой службы
Я думаю, что в вашем случае разрешение является частью домена логики. Поэтому я бы создал абстрактный класс или интерфейс под названием AuthorizationPolicy (возможно, вы можете найти лучшее имя ближе к вашему домену) в моем домене. Прежде чем вы вызовете метод в репозитории, клиент должен проверить, имеют ли они разрешение на основе политики.
Другое решение, поскольку интерфейс репозитория также является частью бизнес-логики, вы можете создать базовый класс для своего репозитория, который проверяет разрешения пользователя и делегирует остальные производным классам.
Реализация AuthorizationPolicy будет вести переговоры с классом Catalog, если вы хотите. Таким образом, два хранилища хорошо развязаны.
- 1. TYPO3 - вызов другого репозитория
- 2. Построение репозитория GIT из частей другого репозитория
- 3. Обновление репозитория Git из другого репозитория
- 4. Инициализация репозитория из существующего
- 5. Удаление репозитория из linux
- 6. Удалить файл из репозитория
- 7. SVN-папки из репозитория
- 8. Ограничение результатов из репозитория
- 9. Неисправность из репозитория git
- 10. Образец репозитория - поиск репозитория на основе типа
- 11. Обновление подмножества файлов репозитория из другого репозитория GitHub
- 12. Начало репозитория git с использованием файлов из внешнего репозитория
- 13. Проверка локального клонирования репозитория GIT производится из основного репозитория GitHub
- 14. Создание репозитория p2 путем разрешения функций Tycho из репозитория Maven
- 15. файлы отслеживания репозитория git из другого локального репозитория
- 16. Обновление локального репозитория с изменениями из репозитория Github
- 17. Файлы родительского репозитория в каталоге дочернего репозитория
- 18. Проверка репозитория
- 19. Организация репозитория
- 20. Создание репозитория
- 21. Какой из этих шаблонов репозитория?
- 22. Создайте JAR из репозитория SVN
- 23. Загрузить файл из репозитория SVN
- 24. Исключить подкаталог из репозитория git
- 25. Сохранение релизов из частного репозитория
- 26. удалить артефакты из репозитория nexus
- 27. Git вытащить из частичного репозитория?
- 28. Удалить проигнорированные файлы из репозитория
- 29. Извлечение одного файла из репозитория
- 30. Модель удалена из репозитория PowerDesigner
Проблема. У меня есть методы, связанные с комментариями в моем репозитории каталога. В моем пользовательском репо я хочу добавить метод canuserpost (который будет запрашивать db, чтобы увидеть, достаточно ли сделано комментариев, чтобы они могли публиковать сообщения). Требуемый код будет использоваться в обоих репо, где он будет идти, в одном и ссылаться на другой, как на ссылку dfa на уровне обслуживания, так и на что-то еще? – monkeylee