Перейти к содержанию

Реализация Reviews и Favorites в Rust

Дата: 2026-03-13 Автор: Trae AI Agent Статус: Выполнено

Описание

В рамках миграции на Rust реализованы модули отзывов (Reviews) и избранного (Favorites), полностью повторяющие функционал FastAPI.

Реализованные модули

1. Reviews (handlers/review.rs, models/review.rs)

  • GET /rust/v1/reviews: Получение списка отзывов с фильтрацией по типу объекта, ID объекта, рейтингу, пользователю. Поддерживает сортировку и пагинацию. Возвращает данные автора и лайк текущего пользователя.
  • POST /rust/v1/reviews: Создание нового отзыва с прикреплением изображений.
  • GET /rust/v1/reviews/stats/{target_type}/{target_id}: Получение статистики (средний рейтинг, распределение оценок, лайки, просмотры).
  • POST /rust/v1/reviews/{id}/like: Тогл лайка (лайк/дизлайк).

2. Favorites (handlers/favorite.rs, models/favorite.rs)

  • GET /rust/v1/favorites: Получение списка избранного пользователя. Автоматически подтягивает детали объектов (название, описание, фото) из соответствующих таблиц (hotels, tours, restaurants, stories).
  • POST /rust/v1/favorites: Добавление объекта в избранное.
  • DELETE /rust/v1/favorites/{item_type}/{item_id}: Удаление из избранного.
  • GET /rust/v1/favorites/check/{item_type}/{item_id}: Проверка наличия в избранном.

3. Исправления и улучшения

  • Исправлен модуль handlers/ws.rs (WebSocket) для корректной работы с токенами и Redis.
  • Исправлен модуль handlers/chat.rs для использования runtime-запросов sqlx.
  • Исправлен db.rs для корректной инициализации состояния чатов (ChatRooms).

Совместимость

API полностью совместимо с фронтендом, использующим соответствующие пути (с префиксом /rust/v1).

Инструкция по проверке

  1. cargo run
  2. Открыть Swagger UI: http://localhost:9011/swagger-ui/
  3. Протестировать эндпоинты в секциях Reviews и Favorites.