В файле ТЗ.txt описано задание.
- Миграция БД сделана в рантайме, т.к. это тестовый проект, чтобы удобне поднимать в докере.
- На такой маленький проект с DDD заморачиватьcя смысла нет.
- В задании не указано как работать с БД, через EF или Dapper, воспользуюсь удобством ORM.
- Буду считать приложение внутренним, не требующим отдачи на фронт сообщений об ошибках. Обработку ситуаций, таких как дубль идентификаторов, запрос уведомления по несуществующему Id, делать не буду. Все ошибки просто буду прокидывать в глобальный фильтр исключений и отдавать из контроллеров 500 со стектрейсом.
- Так как не описано в ТЗ, по одому урлу или по разным будут приходить запросы на создание уведомлений для разных типов устройств, то решил сделать 2 версии контроллеров.
- V1 предолагает, что слаться уведомления для андроид и ios будут по разным урлам. Зато будет выполняться на входе в контроллер встроенная валидация, по урлу сразу понятно для кого уведомление.
- V2 будет принимать уведомления по одному урлу для обоих типов устройств. Это потребует при передаче в контроллер модели уведомления дополнительного указания типа.
- Так как задача тестовая, не хочется тратить впустую время на ненужные тесты. Написал несколько unit и integration тестов, без 100%-го покрытия.
- docker build -t municorn-api .
- docker-compose build
- docker-compose up