Пример брони:
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 файла.