Условие
Реализовать HTTP-сервис для управления бронированиями на PostgreSQL. Сервис должен поддерживать одновременные блокирующие запросы (тестовая система отправляет следующий запрос только после ответа на предыдущий).
Схема БД
CREATE TABLE bookings (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL,
place_id INTEGER NOT NULL,
time_from TIMESTAMP NOT NULL,
time_to TIMESTAMP NOT NULL
);API
GET /ping — health-check. Возвращает HTTP 200 с телом {"status":"ok"}.
POST /book — создать бронирование. Query-параметры: place_id, user_id, from, to (RFC 3339).
- HTTP 200 — успех;
- HTTP 409 — конфликт: интервал пересекается с существующим для этого места.
- Полуинтервалы
[from1, to1)и[from2, to2)пересекаются, еслиfrom1 < to2иfrom2 < to1.
GET /booklist — список бронирований. Один из параметров: user_id или place_id. Ответ HTTP 200 с JSON {"bookings": [...]}. Сортировка по (from, id) ASC.
Подключение к БД
Через переменные окружения: DB_HOST (default localhost), DB_PORT (5432), DB_USER (postgres), DB_PASSWORD (postgres), DB_NAME (contest).
Сервис принимает аргумент командной строки --port <port>.