Git Product home page Git Product logo

cib-interns-test-task's Introduction

Приложение для автоматизации учёта носков на складе магазина.

Функционал приложения:

  • учесть приход и отпуск носков;
  • узнать общее количество носков определенного цвета и состава в данный момент времени.

Основной стек технологий:

  • Java 11;
  • Spring boot
  • Hibernate
  • PostgreSQL
  • Flyway
  • Docker

C помощью GitHub actions настроен автодеплой на Heroku: https://socks-applications.herokuapp.com/. Внешний интерфейс приложения представлен в виде HTTP API.

Список URL HTTP-методов

POST /api/socks/income

Регистрирует приход носков на склад.

Параметры запроса передаются в теле запроса в виде JSON-объекта со следующими атрибутами:

  • color — цвет носков, строка (например, black, red, yellow);
  • cottonPart — процентное содержание хлопка в составе носков, целое число от 0 до 100 (например, 30, 18, 42);
  • quantity — количество пар носков, целое число больше 0.

Пример JSON объекта:

{
   "color": "red",
   "cottonPart": 86,
   "quantity": 23
}

Результаты:

  • HTTP 200 — удалось добавить приход;
  • HTTP 400 — параметры запроса отсутствуют или имеют некорректный формат;
  • HTTP 500 — произошла ошибка, не зависящая от вызывающей стороны (например, база данных недоступна).

POST /api/socks/outcome

Регистрирует отпуск носков со склада. Здесь параметры и результаты аналогичные, но общее количество носков указанного цвета и состава не увеличивается, а уменьшается.

GET /api/socks

Возвращает общее количество носков на складе, соответствующих переданным в параметрах критериям запроса.

Параметры запроса передаются в URL:

  • color — цвет носков, строка;
  • operation — оператор сравнения значения количества хлопка в составе носков, одно значение из: moreThan, lessThan, equal;
  • cottonPart — значение процента хлопка в составе носков из сравнения.

Результаты:

  • HTTP 200 — запрос выполнен, результат в теле ответа в виде строкового представления целого числа;
  • HTTP 400 — параметры запроса отсутствуют или имеют некорректный формат;
  • HTTP 500 — произошла ошибка, не зависящая от вызывающей стороны (например, база данных недоступна).

Примеры запросов:

Как это запустить и протестировать

Heroku

Запускать приложение в ручную не требуется, оно развернуто на Heroku: https://socks-applications.herokuapp.com/. Для взаимодействия с API приложения вам поднадобится Postman и подключение к интернету :)

Docker

Есть возможность запуска проекта через Docker.

Инструкция по запуску Docker

  1. Убедиться, что Docker установлен
  2. Зайти в корневой каталог проекта и выполнить следующие bash-команды:
  • ./mvnw clean package -DskipTests
  • cp target/socks-api.jar .
  • docker-compose up
  1. Готово! Осталось лишь зайти на localhost:8080
  2. В случае, если приложение больше не нужно, можно отключить командой docker-compose down

cib-interns-test-task's People

Contributors

hardecgohard avatar khromushkin avatar rainm avatar tatianasemina avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.