Skip to content

Latest commit

 

History

History
10 lines (8 loc) · 1.99 KB

NOTES.md

File metadata and controls

10 lines (8 loc) · 1.99 KB

Вопросы по заданию и как они решены.

  1. Для избежания ошибок с дробными числами деньги хранятся в копейках.
  2. Так как по заданию ничего не известно про названия услуг, решил создавать csv с id услуг.
  3. Непонятно, что делать с отчётами для бухгалтеров за месяц, который ещё не кончился. Обычно разрешено получать отчёт только за прошедший период. Отчёт для бухгалтеров за текущий месяц всё же реализован. Для того чтобы поддерживать отчёты за текущий месяц, написал кеш, являющийся обёрткой для мапы с мьютексом.

Некоторые заметки по реализации.

  1. Unit-тесты для слоя repository писать не стал, т.к. не считаю их полезными для кода, работающего с БД. В проекте написаны интеграционные тесты, которые тестируют, в том числе и взаимодействие с БД.
  2. Для работы с транзакциями используется специфичная схема, в которой транзакция помещается в context.Context. Это решение почти полностью убивает явность кода, но позволяет легко использовать один и тот же код, работающий с БД, как в транзакциях, так и в не них.
  3. При считывании конфигурации используется антипаттерн синглтон, т.к. мне не хочется передавать конфигурацию в каждый метод.