Source code for eclypse.builders.application.deathstarbench.media_service.rest_services.user_review

"""REST endpoints for per-user review indexing."""

from eclypse.remote.communication import rest
from eclypse.remote.service import RESTService
from eclypse.utils import format_log_kv


[docs] class UserReviewService(RESTService): """Index reviews by author."""
[docs] def __init__(self, service_id: str, store_step: bool = False): """Initialise the user review index.""" super().__init__(service_id, store_step=store_step) self.by_user: dict[int, list[int]] = {}
[docs] @rest.endpoint("/write", "POST") async def write(self, review: dict, reply_to: str, **_): """Index the review by user and forward it to the movie review index.""" self.logger.info( "Received request | " + format_log_kv(review_id=review["review_id"], user=review["user"]) ) self.by_user.setdefault(review["user"]["user_id"], []).append( review["review_id"] ) response = await self.rest.post( "MovieReviewService/write", review=review, reply_to=reply_to, ) self.logger.info( "Received response | " + format_log_kv(source="MovieReviewService", body=response.body) ) return 200, response.body