from services.recommend_app.buildin.buildin_retrieval import BuildInRecommendAppRetrieval from services.recommend_app.database.database_retrieval import DatabaseRecommendAppRetrieval from services.recommend_app.recommend_app_base import RecommendAppRetrievalBase from services.recommend_app.recommend_app_type import RecommendAppType from services.recommend_app.remote.remote_retrieval import RemoteRecommendAppRetrieval class RecommendAppRetrievalFactory: @staticmethod def get_recommend_app_factory(mode: str) -> type[RecommendAppRetrievalBase]: match mode: case RecommendAppType.REMOTE: return RemoteRecommendAppRetrieval case RecommendAppType.DATABASE: return DatabaseRecommendAppRetrieval case RecommendAppType.BUILDIN: return BuildInRecommendAppRetrieval case _: raise ValueError(f"invalid fetch recommended apps mode: {mode}") @staticmethod def get_buildin_recommend_app_retrieval(): return BuildInRecommendAppRetrieval