Commit 16be44d8 authored by Bhargava Rellu's avatar Bhargava Rellu

Optimize imports

parent 900930e3
DATE_KEY = "$date"
\ No newline at end of file
from dataclasses import dataclass, field
from datetime import datetime, timezone
from typing import Dict
from src.reviewsense_ecom.model.Constants import DATE_KEY
from src.reviewsense_ecom.model.FeatureRatingModel import FeatureRating
......@@ -25,8 +25,8 @@ class Product:
updated_at = data.get("updated_at")
def parse_datetime(value):
if isinstance(value, dict) and "$date" in value:
return datetime.fromisoformat(value["$date"].replace("Z", ""))
if isinstance(value, dict) and DATE_KEY in value:
return datetime.fromisoformat(value[DATE_KEY].replace("Z", ""))
elif isinstance(value, str): # If it's a string (ISO format)
return datetime.fromisoformat(value.replace("Z", ""))
return None # Return None if it's missing or invalid
......@@ -54,6 +54,6 @@ class Product:
"ratings_distribution": self.ratings_distribution,
"overall_rating": self.overall_rating,
"total_reviews": self.total_reviews,
"created_at": {"$date": self.created_at.isoformat() + "Z"} if self.created_at else None,
"updated_at": {"$date": self.updated_at.isoformat() + "Z"} if self.updated_at else None
"created_at": {DATE_KEY: self.created_at.isoformat() + "Z"} if self.created_at else None,
"updated_at": {DATE_KEY: self.updated_at.isoformat() + "Z"} if self.updated_at else None
}
......@@ -8,9 +8,9 @@ from src.reviewsense_ecom.model.ReviewResponseModel import ReviewResponseModel
from src.reviewsense_ecom.model.product_review_input import ProductReviewInput
from src.reviewsense_ecom.mongo.mongo_db_config import get_product_by_id, update_product, add_review_features, \
insert_product, product_feature
from src.reviewsense_ecom.service.FeatureExtractor import FeatureExtractor
from src.reviewsense_ecom.service.FeatureUpdater import FeatureUpdater
from src.reviewsense_ecom.service.ReviewService import ReviewService
from src.reviewsense_ecom.service.feature_extractor import FeatureExtractor
router = APIRouter()
review_service = ReviewService()
......@@ -74,19 +74,6 @@ async def fetch_percentage(product_id: str, features: str): # NOT REQUIRED
return {"message": "No data found"}
@router.get("/fetch_reviews/", response_model=ReviewResponseModel)
async def fetch_review_by_feature(product_id: str, features: str): # NotRequired
"""
Fetch reviews from MongoDB based on product_id and feature.
"""
logger.info(f"Fetching reviews for product_id: {product_id}, feature: {features}")
reviews = review_service.get_review_by_feature(product_id, features)
if isinstance(reviews, dict):
return reviews
return {"reviews": reviews}
@router.get("/fetch_full_reviews/", response_model=ReviewResponseModel)
async def fetch_review_by_feature(product_id: str, features: str): # Required
"""
......
# router/review_rater.py
# router/ReviewRater.py
from collections import defaultdict
from typing import Dict, List, Optional
......
from typing import List, Dict, Optional
from src.reviewsense_ecom.mongo.mongo_db_config import get_db_connection
from src.reviewsense_ecom.service.review_rater import ReviewRater
from src.reviewsense_ecom.service.ReviewRater import ReviewRater
class ReviewService:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment