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 dataclasses import dataclass, field
from datetime import datetime, timezone from datetime import datetime, timezone
from typing import Dict from typing import Dict
from src.reviewsense_ecom.model.Constants import DATE_KEY
from src.reviewsense_ecom.model.FeatureRatingModel import FeatureRating from src.reviewsense_ecom.model.FeatureRatingModel import FeatureRating
...@@ -25,8 +25,8 @@ class Product: ...@@ -25,8 +25,8 @@ class Product:
updated_at = data.get("updated_at") updated_at = data.get("updated_at")
def parse_datetime(value): def parse_datetime(value):
if isinstance(value, dict) and "$date" in value: if isinstance(value, dict) and DATE_KEY in value:
return datetime.fromisoformat(value["$date"].replace("Z", "")) return datetime.fromisoformat(value[DATE_KEY].replace("Z", ""))
elif isinstance(value, str): # If it's a string (ISO format) elif isinstance(value, str): # If it's a string (ISO format)
return datetime.fromisoformat(value.replace("Z", "")) return datetime.fromisoformat(value.replace("Z", ""))
return None # Return None if it's missing or invalid return None # Return None if it's missing or invalid
...@@ -54,6 +54,6 @@ class Product: ...@@ -54,6 +54,6 @@ class Product:
"ratings_distribution": self.ratings_distribution, "ratings_distribution": self.ratings_distribution,
"overall_rating": self.overall_rating, "overall_rating": self.overall_rating,
"total_reviews": self.total_reviews, "total_reviews": self.total_reviews,
"created_at": {"$date": self.created_at.isoformat() + "Z"} if self.created_at else None, "created_at": {DATE_KEY: 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 "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 ...@@ -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.model.product_review_input import ProductReviewInput
from src.reviewsense_ecom.mongo.mongo_db_config import get_product_by_id, update_product, add_review_features, \ from src.reviewsense_ecom.mongo.mongo_db_config import get_product_by_id, update_product, add_review_features, \
insert_product, product_feature 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.FeatureUpdater import FeatureUpdater
from src.reviewsense_ecom.service.ReviewService import ReviewService from src.reviewsense_ecom.service.ReviewService import ReviewService
from src.reviewsense_ecom.service.feature_extractor import FeatureExtractor
router = APIRouter() router = APIRouter()
review_service = ReviewService() review_service = ReviewService()
...@@ -74,19 +74,6 @@ async def fetch_percentage(product_id: str, features: str): # NOT REQUIRED ...@@ -74,19 +74,6 @@ async def fetch_percentage(product_id: str, features: str): # NOT REQUIRED
return {"message": "No data found"} 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) @router.get("/fetch_full_reviews/", response_model=ReviewResponseModel)
async def fetch_review_by_feature(product_id: str, features: str): # Required async def fetch_review_by_feature(product_id: str, features: str): # Required
""" """
......
# router/review_rater.py # router/ReviewRater.py
from collections import defaultdict from collections import defaultdict
from typing import Dict, List, Optional from typing import Dict, List, Optional
......
from typing import List, Dict, Optional from typing import List, Dict, Optional
from src.reviewsense_ecom.mongo.mongo_db_config import get_db_connection 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: 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