Base code
This commit is contained in:
84
backend/services/business_info_service.py
Normal file
84
backend/services/business_info_service.py
Normal file
@@ -0,0 +1,84 @@
|
||||
"""Business Information Service for ALwrity backend."""
|
||||
from sqlalchemy.orm import Session
|
||||
from models.user_business_info import UserBusinessInfo
|
||||
from models.business_info_request import BusinessInfoRequest, BusinessInfoResponse
|
||||
from services.database import get_db
|
||||
from loguru import logger
|
||||
from typing import Optional
|
||||
|
||||
logger.info("🔄 Loading BusinessInfoService...")
|
||||
|
||||
class BusinessInfoService:
|
||||
def __init__(self):
|
||||
logger.info("🆕 Initializing BusinessInfoService...")
|
||||
|
||||
def save_business_info(self, business_info: BusinessInfoRequest) -> BusinessInfoResponse:
|
||||
db: Session = next(get_db())
|
||||
logger.debug(f"Attempting to save business info for user_id: {business_info.user_id}")
|
||||
|
||||
# Check if business info already exists for this user
|
||||
existing_info = db.query(UserBusinessInfo).filter(UserBusinessInfo.user_id == business_info.user_id).first()
|
||||
|
||||
if existing_info:
|
||||
logger.info(f"Existing business info found for user_id {business_info.user_id}, updating it.")
|
||||
existing_info.business_description = business_info.business_description
|
||||
existing_info.industry = business_info.industry
|
||||
existing_info.target_audience = business_info.target_audience
|
||||
existing_info.business_goals = business_info.business_goals
|
||||
db.commit()
|
||||
db.refresh(existing_info)
|
||||
logger.success(f"Updated business info for user_id {business_info.user_id}, ID: {existing_info.id}")
|
||||
return BusinessInfoResponse(**existing_info.to_dict())
|
||||
else:
|
||||
logger.info(f"No existing business info for user_id {business_info.user_id}, creating new entry.")
|
||||
db_business_info = UserBusinessInfo(
|
||||
user_id=business_info.user_id,
|
||||
business_description=business_info.business_description,
|
||||
industry=business_info.industry,
|
||||
target_audience=business_info.target_audience,
|
||||
business_goals=business_info.business_goals
|
||||
)
|
||||
db.add(db_business_info)
|
||||
db.commit()
|
||||
db.refresh(db_business_info)
|
||||
logger.success(f"Saved new business info for user_id {business_info.user_id}, ID: {db_business_info.id}")
|
||||
return BusinessInfoResponse(**db_business_info.to_dict())
|
||||
|
||||
def get_business_info(self, business_info_id: int) -> Optional[BusinessInfoResponse]:
|
||||
db: Session = next(get_db())
|
||||
logger.debug(f"Retrieving business info by ID: {business_info_id}")
|
||||
business_info = db.query(UserBusinessInfo).filter(UserBusinessInfo.id == business_info_id).first()
|
||||
if business_info:
|
||||
logger.debug(f"Found business info for ID: {business_info_id}")
|
||||
return BusinessInfoResponse(**business_info.to_dict())
|
||||
logger.warning(f"No business info found for ID: {business_info_id}")
|
||||
return None
|
||||
|
||||
def get_business_info_by_user(self, user_id: int) -> Optional[BusinessInfoResponse]:
|
||||
db: Session = next(get_db())
|
||||
logger.debug(f"Retrieving business info by user ID: {user_id}")
|
||||
business_info = db.query(UserBusinessInfo).filter(UserBusinessInfo.user_id == user_id).first()
|
||||
if business_info:
|
||||
logger.debug(f"Found business info for user ID: {user_id}")
|
||||
return BusinessInfoResponse(**business_info.to_dict())
|
||||
logger.warning(f"No business info found for user ID: {user_id}")
|
||||
return None
|
||||
|
||||
def update_business_info(self, business_info_id: int, business_info: BusinessInfoRequest) -> Optional[BusinessInfoResponse]:
|
||||
db: Session = next(get_db())
|
||||
logger.debug(f"Updating business info for ID: {business_info_id}")
|
||||
db_business_info = db.query(UserBusinessInfo).filter(UserBusinessInfo.id == business_info_id).first()
|
||||
if db_business_info:
|
||||
db_business_info.business_description = business_info.business_description
|
||||
db_business_info.industry = business_info.industry
|
||||
db_business_info.target_audience = business_info.target_audience
|
||||
db_business_info.business_goals = business_info.business_goals
|
||||
db.commit()
|
||||
db.refresh(db_business_info)
|
||||
logger.success(f"Updated business info for ID: {business_info_id}")
|
||||
return BusinessInfoResponse(**db_business_info.to_dict())
|
||||
logger.warning(f"No business info found to update for ID: {business_info_id}")
|
||||
return None
|
||||
|
||||
business_info_service = BusinessInfoService()
|
||||
logger.info("✅ BusinessInfoService loaded successfully!")
|
||||
Reference in New Issue
Block a user