Skip to content

AndreiUkladchikov/MoneyBox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Не делаю отдельные бранчи и пул реквесты для каждого этапа. Просто коммичу в мастер чтобы была видна история разработки - как менялось приложение с этапами.

Miner

Тестовое задание

Этап 1

Консольное приложение Майнер - рандомно добавляет монетки в копилку

Этап 2

Добавил базу Sqlite. Работа через EF Code-First. Учитывая что модели для хранения "денег всего" и "истории добавления" похожие, чтобы не дублировать код заполнения моделей - сделал простые мапперы. Грубо говоря на будущее (например появятся поля Кто, GPS координата и т.д.), можно один объект копировать в другой. С одной стороны можно использовать и триггеры, так наверное красивее, но о наличии триггеров в БД можно со временем забыть в процессе разработки.

Этап 3

Можно обсуждать архитектуру. Как мне кажется, в идеале должно выглядеть так:

  • сделать веб сервис с API
  • сделать проект Domain. В нем модели (DTO) и сервис для работы с копилкой (CRUD). Эти же модели пригодятся для работы с клиентом хаба из Этапа 4.
  • из майнера теперь должен вызываться не репозиторий, а сервис. Чтобы вся работа с данными была одинаковая через сервис. Репозиторий "изолирован" от потребителей данных (майнера и вебсервиса).
  • должен быть маппинг из моделей БД в модели, которые отдает API (DTO) и наоборот. Можно использовать Automapper например.

UPDATED 20.05.2024

  • Сделал веб сервис с API
  • Добавил сервис
  • Добавил маппинг моделей из БД
  • Доработал репозиторий (добавил методы для получения логов)
  • Так как при отъеме монет из копилки есть какая-то логика - добавил юнит тесты. Moq библиотеку не использовал, так как репозиторий небольшой. Написал простой MockRepository, который реализует методы IRepository

About

Test task

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages