Skip to content

AlexBugrimov/zoo-keeping

Repository files navigation

Содержание зоопарка

build checkstyle

MVP

В MVP проекте реализован минимальный функционал и отсутствуют или в ограниченном количестве обработка крайних и неверных запросов, ошибок,
а также нет модульного тестирования методов.
Организованно BDD-тесты на базе Posman
файл с тестами в папе Postman корневого каталога приложения

Проект работает на стандартном порте (8080) При запуске проекта приложение самостоятельно развёртывает БД на H2 (Подключена консоль http://localhost:8080/h2-console)

url=jdbc:h2:file:./db/zoo

username=sa

password=password

Для заполнения БД тестовыми данными воспользуйтесть endPoint`том:

http://localhost:8080/zoo/admin/start

Сущности

Животное

Состоит из полей:

Название

Вид (млекопитающее/птица)

Признак хищника (да/нет).

Продукты

Состоит из полей:

Название

Текущее количество

Единица измерения(кг/шт/л)

Тип (овощ/фрукт/мясо/жидкость)

Требования

  1. Каждое животное может употреблять несколько вариантов Продуктов.
  2. Для каждого животного надо указать его ежедневную норму потребления каждого продукта.
  3. Тестовые данные такие:
Животные (Обезьяна, Заяц, Орёл, Тигр, Лошадь). 
Продукты (Морковь - шт, Мясо- кг, Капуста - шт, Банан - шт, Яблоко - шт, Зерно - кг, Вода - л).
Воду пьют все животные, а также дополнительно едят: 
Обезьяна (банан, яблоко), 
Заяц (морковь, капуста),
Орёл (мясо, зерно, яблоко), 
Тигр (мясо), 
Лошадь (зерно, яблоко, морковь). 
Нормы ежедневного потребления указать разные, произвольные. 
Текущее количество также разное, но зерна должно быть много, яблок - 0, мяса - мало.
  1. Разработать REST API, которое позволяет:
a.  Получить информацию о всех животных. GET:http://localhost:8080/zoo/animals
b.  Получить информацию о всех продуктах. GET:http://localhost:8080/zoo/diets
c.  Получить информацию о животном по id. GET:http://localhost:8080/zoo/animals/:id
d.  Получить информацию о продукте по id. GET:http://localhost:8080/zoo/foods/:id
e.  Получить информацию о питании животных на 7 дней от заданной даты. Название продукта, сколько продукта надо на 7 дней, сколько продукта всего есть, сколько его 
не хватает (если продукта достаточно, то вернуть null), единица измерения. 
GET:http://localhost:8080/zoo/diets/info?periodStart=2023-05-20
Если заданная дана больше текущей, то возвращаем необходимое количество продуктов на 7 дней и + сумму продуктов необходимых на дни от текущей даты, 
а нехватку продуктов высчитывае как:
остаток продуктов на складе - необходимое количество продуктов на 7 дней и - необходимое количество продуктов на разницу дней текущей даты и заданной
  1. Не обязательно:
a.  Получить информацию о животных, с перечислением продуктов их питания. Название животного, вид, список продуктов (название, тип, потребление, единица измерения). Необязательные параметры запроса: вид животного, тип продукта, хищник или нет и произвольная строка с названием животного (строка может не содержать полное название животного). Усложнение: добавить пагинацию.
GET:http://localhost:8080/zoo/diets/all?{перечисляем параменты}
b.  Создание нового животного POST:http://localhost:8080/zoo/animals    @RequestBody в формате JSON
c.  Удаление животного по id. DELETE:http://localhost:8080/zoo/animals/:id
d.  Удаление нескольких животных, всех животных сразу. DELETE:http://localhost:8080/zoo/animals/group/:Ids DELETE:http://localhost:8080/zoo/animals
e.  Изменение ежедневной нормы для животного по его id. PUT:[{{baseUrl}}](http://localhost:8080)/zoo/diets/diet/:animalId/:foodid/:amound
i.  Создание нового продукта. POST:http://localhost:8080/zoo/foods @RequestBody в формате JSON
f.  Удаление продукта по id. DELETE:http://localhost:8080/zoo/foods/:id   
j.  Удаление нескольких продуктов, всех продуктов сразу. DELETE:http://localhost:8080/zoo/foods/group/:Ids DELETE:{{baseUrl}}/zoo/foods
g.  Назначение продукта животному. Усложнение: назначение нескольких продуктов одному животному сразу. POST:http://localhost:8080/zoo/diets/diet/:animalId/:foodid/:amound
k.  Изменение количества продукта по его id. PUT:http://localhost:8080/zoo/foods/:foodId/:amound
  1. JAVA 11, REST API, JPA, named queries, Criteria API (там где он нужен). БД любая, можно H2, главное сделать простое разворачивание таблиц БД и заполнение их тестовыми данными (плюс: использование liquibase).