А какое решение используется у вас в проекте, если не секрет?) 216 сущностей в одном сервисе, мне кажется, в любом формате и архитектуре тяжело поддерживать
По сути, назначение адаптера сводится к хендлеру, только в обратном порядке. Если в хендлере мы получаем запрос, обрабатываем его и отдаем ответ, то в адаптере мы обрабатываем данные, отправляем запрос и затем обрабатываем ответ. Так что, отвечая на вопросы:
В принципе, ответственности не сильно больше, чем у хендлера: обрабатывать и отправлять/получать данные.
Исходя из первого, маппинг можно отнести к обработке данных, так что да, вполне логично сделать его на этом уровне.
Передавать все в контексте - антипаттерн, в контексте лежит по минимуму и реально необходимое. В моей структуре как раз наоборот практически ничего в контексте не лежит, а передается от слоя в слой через аргументы
CRUD - не панацея. Организуйте как удобно, тут про слои и их взаимодействие
3 пункт звучит круто, никогда о таком не задумывался, спасибо)
БД - абстрактный пример. Лично я за свою жизнь пережил переезд на другой логгер и на другую версию тарантула, без интерфейсов - больно
Как раз тестируется это проще за счет интерфейсов "с двух сторон", мокаешь и делаешь юниты, не вижу проблемы в тестировании.
Спасибо за виденье, учту в следующих своих проектах)
Смена субд взята абстрактно, как более наглядный пример. На практике такие ситуации случались дважды: - Переезжали на новый логгер - Разрабы ломали обратную совместимость и при переезде на новую версию надо было все перелопачивать (Привет tarantool)
Да, изначально подумал, что как тестовый пример пойдет, но сейчас вижу, что многие сохраняют и возможно будут использовать этот код, поэтому подправил код и предлагаю запустить постоянно читающую логи горутину, писать их в канал, а из канала потом вычитывать)
Привет, спасибо за замечание) А какие могут быть потенциально проблемы с пустой строкой?
В моем понимании это как бы означает не ошибку, а то что логи еще не писались в файл, нет логов - нет файла, собственно поэтому логически это не вынесено под иф с ошибкой)
А какое решение используется у вас в проекте, если не секрет?) 216 сущностей в одном сервисе, мне кажется, в любом формате и архитектуре тяжело поддерживать
Привет! Спасибо за крутой фидбек)
По сути, назначение адаптера сводится к хендлеру, только в обратном порядке. Если в хендлере мы получаем запрос, обрабатываем его и отдаем ответ, то в адаптере мы обрабатываем данные, отправляем запрос и затем обрабатываем ответ. Так что, отвечая на вопросы:
В принципе, ответственности не сильно больше, чем у хендлера: обрабатывать и отправлять/получать данные.
Исходя из первого, маппинг можно отнести к обработке данных, так что да, вполне логично сделать его на этом уровне.
Передавать все в контексте - антипаттерн, в контексте лежит по минимуму и реально необходимое. В моей структуре как раз наоборот практически ничего в контексте не лежит, а передается от слоя в слой через аргументы
CRUD - не панацея. Организуйте как удобно, тут про слои и их взаимодействие
3 пункт звучит круто, никогда о таком не задумывался, спасибо)
БД - абстрактный пример. Лично я за свою жизнь пережил переезд на другой логгер и на другую версию тарантула, без интерфейсов - больно
Как раз тестируется это проще за счет интерфейсов "с двух сторон", мокаешь и делаешь юниты, не вижу проблемы в тестировании.
Спасибо за виденье, учту в следующих своих проектах)
Смена субд взята абстрактно, как более наглядный пример. На практике такие ситуации случались дважды:
- Переезжали на новый логгер
- Разрабы ломали обратную совместимость и при переезде на новую версию надо было все перелопачивать (Привет tarantool)
Да, изначально подумал, что как тестовый пример пойдет, но сейчас вижу, что многие сохраняют и возможно будут использовать этот код, поэтому подправил код и предлагаю запустить постоянно читающую логи горутину, писать их в канал, а из канала потом вычитывать)
Привет, спасибо за замечание) А какие могут быть потенциально проблемы с пустой строкой?
В моем понимании это как бы означает не ошибку, а то что логи еще не писались в файл, нет логов - нет файла, собственно поэтому логически это не вынесено под иф с ошибкой)