from functools import lru_cache from app.core.config import settings from app.core.openai_client import openai_client from app.db.mongo import get_api_logs_collection, get_autocategory_collection, get_subcategory_collection from app.services.autocategorizer import AutoCategoryService from app.services.api_logger import ApiLogger @lru_cache def _get_service() -> AutoCategoryService: return AutoCategoryService( collection_getter=get_autocategory_collection, subcategory_collection_getter=get_subcategory_collection, openai_client=openai_client, model=settings.openai_model, cache_ttl_seconds=settings.category_cache_ttl_seconds, db_timeout_seconds=settings.db_query_timeout_seconds, model_timeout_seconds=settings.openai_api_timeout_seconds, ) def get_category_service() -> AutoCategoryService: return _get_service() @lru_cache def _get_api_logger() -> ApiLogger: return ApiLogger(collection_getter=get_api_logs_collection) def get_api_logger() -> ApiLogger: return _get_api_logger()