@@ -282,6 +282,46 @@ def finalize(self, ipv8: IPv8, session: Session, community: Community) -> None:
282
282
session .rest_manager .get_endpoint ("/api/ipv8" ).endpoints ["/dht" ].dht = community
283
283
284
284
285
+ @precondition ('session.config.get("recommender/enabled")' )
286
+ @overlay ("tribler.core.recommender.community" , "RecommenderCommunity" )
287
+ class RecommenderComponent (CommunityLauncherWEndpoints ):
288
+ """
289
+ Launch instructions for the user recommender community.
290
+ """
291
+
292
+ def get_kwargs (self , session : Session ) -> dict :
293
+ """
294
+ Create and forward the rendezvous database for the Community.
295
+ """
296
+ from tribler .core .recommender .manager import Manager
297
+
298
+ db_path = str (Path (session .config .get_version_state_dir ()) / "sqlite" / "recommender.db" )
299
+ if session .config .get ("memory_db" ):
300
+ db_path = ":memory:"
301
+
302
+ out = super ().get_kwargs (session )
303
+ out ["manager" ] = Manager (db_path )
304
+
305
+ return out
306
+
307
+ def finalize (self , ipv8 : IPv8 , session : Session , community : Community ) -> None :
308
+ """
309
+ When we are done launching, register our REST API.
310
+ """
311
+ from tribler .core .recommender .community import RecommenderCommunity
312
+
313
+ endpoint = session .rest_manager .get_endpoint ("/api/recommender" )
314
+ endpoint .manager = cast (RecommenderCommunity , community ).manager
315
+
316
+ def get_endpoints (self ) -> list [RESTEndpoint ]:
317
+ """
318
+ Add the knowledge endpoint.
319
+ """
320
+ from tribler .core .recommender .restapi .endpoint import RecommenderEndpoint
321
+
322
+ return [* super ().get_endpoints (), RecommenderEndpoint ()]
323
+
324
+
285
325
@set_in_session ("tunnel_community" )
286
326
@precondition ('session.config.get("tunnel_community/enabled")' )
287
327
@after ("DHTDiscoveryComponent" )
0 commit comments