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

Необходимо разработать класс (либо RESTful сервис), предоставляющий интерфейс

  • Создать именованную колоду карт (колода создаётся упорядоченной)
  • Удалить именованную колоду
  • Получить список названий колод
  • Перетасовать колоду
  • Получить колоду по имени (в её текущем упорядоченном/перетасованном состоянии)

Необходимо спроектировать интерфейсы так, чтобы алгоритм перетасовки мог задаваться через конфигурацию приложения (путём выбора из «простой» и «эмуляция перетасовки вручную»). Необходимо самостоятельно спроектировать API для колоды и все типы данных.

Примечания:

  • Колоды достаточно хранить в памяти, но подумать о том, как впоследствии работать с БД.
  • Реализацию достаточно сделать для стандартной колоды игральных карт (52 штуки), но будет плюсом при решении помнить о том, что сортировщику карт всё равно, какую колоду тасовать.
  • Алгоритм перетасовки достаточно реализовать «простой» (любой, самый быстрый в реализации); при желании можно реализовать «эмуляцию перетасовки вручную» (колода делится примерно посередине, части меняются местами, и так много раз).

База данных

В качестве бд используется PostgreSQL.

Запуск

Перед запуском необходимо прописать данные в secrets.json в среде разработки:

{
  "ConnectionString": "Server=localhost;Port=5432;Database=testdb;User Id=admin;Password=admin;"
}

Миграции: dotnet ef migrations add InitialCreate & dotnet ef database update