Разработать сервис отвечающий за ведение данных студентов.
Сервис ответственен за сущности:
- Студент a. ID (required, PK). Можно использовать любой вариант. Это может быть как GUID, так и обычный int/long + increment. Это поле системное, изменение данного поля не допускается. b. Пол (обязательное поле). c. Фамилия (обязательное, максимальная длина 40 символов) d. Имя (обязательное, максимальная длина 40 символов) e. Отчество ( не обязательное, максимальная длина 60 символов) f. Уникальный идентификатор студента (not required, должен быть уникальным в рамках всех студентов, минимальная длина 6 символов, максимальная длина 16). Опциональный, например мы хотим задать для студента позывной, но не хотим чтобы два студента были с одинаковыми позывными.
- Группа a. ID (required, PK). Можно использовать любой вариант. Это может быть как GUID, так и обычный int/long + increment. Это поле системное, изменение данного поля не допускается. b. Имя группы. (обязательное, максимальная длина 25 символов)
Студент может находится одновременно в нескольких группах (многие ко многим).
Предусмотреть все виды операций над сущностями (CRUD).
Контроллеры должны содержать следующие методы:
- Создание/удаление/редактирование студента
- Создание/удаление/редактирование группы.
- Добавление/Удаление студента из группы.
- Получение списка студентов с возможностью фильтрации по полям (Пол, ФИО, уникальный идентификатор, название группы) и ограничением по результату (пагинация). a. Результатом должен список где каждый элемент содержит поля: ID, ФИО, уникальный идентификатор, список групп через запятую.
- Получение списка групп с возможностью фильтрации по полю «Имя группы». a. Результатом должен список где каждый элемент содержит поля: ID, Имя группы, кол-во студентов в группе.
- Dotnet core 2.0 +
- EF
- JSON как формат отдачи данных.
- Docker
- Swagger
- Unit testing.
- Защитить контроллеры с помощью JWT.
- Domain Layer
- Data Layer
- Presentation Layer
Попытаться соблюсти правила зависимостей Clean Architecture https://proandroiddev.com/clean-architecture-data-flow-dependency-rule-615ffdd79e29
- Presentation Layer depends on Domain Layer.
- Data Layer depends on Domain Layer.
- Domain Layer does NOT depend on Data Layer.