Skip to content

s3rzh/horse-exchange

Repository files navigation

ТЗ:

Биржа лошадей

Цель Цель задания - выяснить уровень владения ООП, навыки построения абстракций и знание принципов. Разработать модель на языке программирования Golang для данной предметной области. Описать типы сущностей, сервисов и интерфейсы для абстрагирования от слоя хранения данных. Реализовывать графический интерфейс с контроллерами и представлениями и хранение данных в БД не обязательно. Можно ограничиться интерфейсами репозиториев или заглушками.

Все что не описано на совести и фантазии разработчика.

Описание

Биржа лошадей позволяет покупать или брать в аренду лошадей для различных задач: земледелие работа на каменоломне перевозки грузов и т.п.

Для удобства клиентов весь ассортимент разбит по категориям, например: породы назначение

Для описания лошади используются характеристики кличка пол возраст вес порода место рождения повадки ставка почасовой аренды стоимость покупки

Функционал Довольно примитивный и не сложный

Покупка лошади пользователь выбирает лошадь из каталога пользователь покупает лошадь, биржа проверяет свободна ли эта лошадь, если она занята (то есть уже арендована), то такую лошадь нельзя купить

Аренда лошади пользователь находит подходящую лошадь в каталоге пользователь может создать запрос на аренду лошади если в эти даты лошадь доступна, то запрос удовлетворяется и пользователю дается договор аренды со стоимостью пользователь подписывает и оплачивает договор биржа проверяет если договор не оплачен, то запрос пользователя на аренду не учитывается и лошадь считается свободной для аренды

ПО: Git, Docker, Postman

Клонировать проект: git clone git@gitlab.com:dev-area/horse-exchange.git

Перейти в папку проекта и cоздать в корне файл .env

Добавить в него DB_PASSWORD=qwerty

В корне проекта, выполнить след. команды: docker-compose up -d --build horse-exchange-app

Создание образа для миграций docker build -t migrator ./api/migrator

Запустить миграции docker run --network host migrator -path=./migrations/ -database "postgres://postgres:qwerty@localhost:5434/postgres?sslmode=disable" up

В Postman

(получение списка лошадей) GET http://localhost:8000/api/horses

(список лошадей по каталогам) GET http://localhost:8000/api/catalog/breeds GET http://localhost:8000/api/catalog/breeds/2

GET http://localhost:8000/api/catalog/tasks GET http://localhost:8000/api/catalog/tasks/3

купить лошадь PATCH http://localhost:8000/api/horses/2/buy

запросить аренду POST http://localhost:8000/api/horses/rent

В Body/raw/JSON добавить

{ "horse_id": 1, "since": "2021-06-23 00:00:00", "till": "2021-06-23 23:59:59" }

оплатить аренду (ссылку получить из предыдущего запроса) PATCH http://localhost:8000/api/horses/rent/1/pay

docker exec user_clickhouse bash -c "clickhouse-client -mn < /var/lib/clickhouse/migrations/1_init_schema.up.sql"

docker exec user_clickhouse bash -c "echo $PATH"

Для отката миграций docker run --network host migrator -path=./migrations/ -database "postgres://postgres:qwerty@localhost:5434/postgres?sslmode=disable" down -all

docker rm user_postgres user_redis user_rabbitmq user_clickhouse user_logger user_app

дата: лето 2021

About

test project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published