Пример брони:
1: ABCD45 / 2022-01-01 / 7
внутренний идентификатор: 1
- инкремент
маршрут: ABCD45
- 4-10 символов
дата: 2022-01-01
- строковое представление в формате YYYY-MM-DD
номер места: 7
- от 1 до 100 включительно
поднятие окружения: docker-compose up -d
запуск всех миграций БД: ./migrate.sh
сборка: make build
запуск: make run
По-умолчанию запускаются telegram бот, gRPC сервер, HTTP-сервер в качестве интерфесов пользователя. Также запускается бэкенд gRPC сервер для взаимодействия с БД, Kafka кластер и сервер метрик.
Запись данных происходит асинхронно по Kafka (3 ноды + 1 нода Zookeeper), чтение синхронное.
Возможности взаимодействия:
- telegram_bot - необходимо задать переменную окружения TELEGRAM_API_KEY с токеном telegram бота
- gRPC сервер на
localhost:8081
(присутствует пример клиентаclient/client.go
) - HTTP-сервер на
localhost:8080
После запуска доступны:
custom_consumer::income // всего чтений Kafka-consumer
custom_consumer::success // успешных операций
custom_consumer::fail // неуспешных операций
Метрики хранятся in-memory, после перезапуска обновляются.
- запуск тестов:
make test
- coverage:
make cover
- подготовка окружения:
docker-compose up -d
./migrate.sh
make run
- запуск тестов:
make integration
- при отправке сообщения или пустой команды (
/
) работает как эхобот - при отправке некорректной команды сработает предложение о вводе
/help
/help
- список доступных команд/list <offset> <limit>
- вывести все забронированые места/get <id>
- вывести бронь по идентификатору/add <route> <date> <seat>
- создань новую бронь/change_seat <id> <seat>
- обновить номер места на значениеseat
по идентификатору/change_date_seat <id> <date> <seat>
- обновить дату и номер места на значенияdate
иnew_value
по идентификатору/delete <id>
- удалить бронь по идентификатору
Аналогично telegram боту (за исключением echo и help).
Proto файл находится в api/api.proto
.
Swagger находится в gen/openapiv2/api.swagger.json
.
Генерируется на основе .proto
файла.