File size: 1,071 Bytes
b26b1fd
 
 
 
790aee0
b26b1fd
a9f96b8
b26b1fd
 
 
 
 
 
790aee0
b26b1fd
 
 
8cceab7
cc7e275
b26b1fd
 
 
 
 
a9f96b8
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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()