frimeet-api-nlp / app /modules /posts /infrastructure /api /public_dependencies.py
AlleksDev's picture
Fix: Custom Feed
5c793cc unverified
Raw
History Blame Contribute Delete
1.44 kB
from functools import lru_cache
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_repository import MockPostVectorRepository
from app.modules.posts.infrastructure.simple_post_ranker import SimplePostRanker
from app.modules.posts.infrastructure.text_preprocessor import SharedTextPreprocessor
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(AwsPgvectorClient(settings, role="reader"))
return MockPostVectorRepository(get_embedding_provider())
@lru_cache
def get_recommend_posts_use_case() -> RecommendPostsUseCase:
settings = get_settings()
return RecommendPostsUseCase(
embedding_provider=get_embedding_provider(),
text_preprocessor=SharedTextPreprocessor(),
post_repository=get_post_repository(),
ranker=SimplePostRanker(),
cache=SimpleTTLCache(settings.vector_search_cache_ttl_seconds),
)