frimeet-api-nlp / app /modules /posts /api /dependencies.py
AlleksDev's picture
Deploy Frimeet API NLP
45b1179
Raw
History Blame Contribute Delete
2.03 kB
from functools import lru_cache
from app.modules.posts.application.use_cases.get_post_clusters import GetPostClustersUseCase
from app.modules.posts.application.use_cases.recommend_posts import RecommendPostsUseCase
from app.modules.posts.infrastructure.aws_pgvector_post_repository import (
AwsPgvectorPostRepository,
)
from app.modules.posts.infrastructure.mock_post_cluster_repository import MockPostClusterRepository
from app.modules.posts.infrastructure.mock_post_repository import MockPostVectorRepository
from app.modules.posts.infrastructure.simple_post_ranker import SimplePostRanker
from app.shared.cache.memory import SimpleTTLCache
from app.shared.config.settings import get_settings
from app.shared.dependencies import get_embedding_provider
from app.shared.vector_store.aws_pgvector import AwsPgvectorClient
@lru_cache
def get_post_repository() -> MockPostVectorRepository | AwsPgvectorPostRepository:
settings = get_settings()
if settings.vector_store_provider == "aws_pgvector":
return AwsPgvectorPostRepository(vector_client=AwsPgvectorClient(settings, role="reader"))
return MockPostVectorRepository(embedding_provider=get_embedding_provider())
@lru_cache
def get_post_ranker() -> SimplePostRanker:
return SimplePostRanker()
@lru_cache
def get_post_recommendation_cache() -> SimpleTTLCache:
settings = get_settings()
return SimpleTTLCache(default_ttl_seconds=settings.vector_search_cache_ttl_seconds)
@lru_cache
def get_post_cluster_repository() -> MockPostClusterRepository:
return MockPostClusterRepository()
@lru_cache
def get_recommend_posts_use_case() -> RecommendPostsUseCase:
return RecommendPostsUseCase(
embedding_provider=get_embedding_provider(),
post_repository=get_post_repository(),
ranker=get_post_ranker(),
cache=get_post_recommendation_cache(),
)
@lru_cache
def get_post_clusters_use_case() -> GetPostClustersUseCase:
return GetPostClustersUseCase(cluster_repository=get_post_cluster_repository())