@@ -309,6 +309,32 @@ def get_milvus_config():
309309 "password" : os .getenv ("MILVUS_PASSWORD" , "12345678" ),
310310 }
311311
312+ @staticmethod
313+ def get_polardb_config (user_id : str | None = None ) -> dict [str , Any ]:
314+ """Get PolarDB configuration."""
315+ use_multi_db = os .getenv ("POLAR_DB_USE_MULTI_DB" , "false" ).lower () == "true"
316+
317+ if use_multi_db :
318+ # Multi-DB mode: each user gets their own database (physical isolation)
319+ db_name = f"memos{ user_id .replace ('-' , '' )} " if user_id else "memos_default"
320+ user_name = None
321+ else :
322+ # Shared-DB mode: all users share one database with user_name tag (logical isolation)
323+ db_name = os .getenv ("POLAR_DB_DB_NAME" , "shared_memos_db" )
324+ user_name = f"memos{ user_id .replace ('-' , '' )} " if user_id else "memos_default"
325+
326+ return {
327+ "host" : os .getenv ("POLAR_DB_HOST" , "localhost" ),
328+ "port" : int (os .getenv ("POLAR_DB_PORT" , "5432" )),
329+ "user" : os .getenv ("POLAR_DB_USER" , "root" ),
330+ "password" : os .getenv ("POLAR_DB_PASSWORD" , "123456" ),
331+ "db_name" : db_name ,
332+ "user_name" : user_name ,
333+ "use_multi_db" : use_multi_db ,
334+ "auto_create" : True ,
335+ "embedding_dimension" : int (os .getenv ("EMBEDDING_DIMENSION" , 1024 )),
336+ }
337+
312338 @staticmethod
313339 def get_mysql_config () -> dict [str , Any ]:
314340 """Get MySQL configuration."""
@@ -540,6 +566,7 @@ def create_user_config(user_name: str, user_id: str) -> tuple[MOSConfig, General
540566 neo4j_community_config = APIConfig .get_neo4j_community_config (user_id )
541567 neo4j_config = APIConfig .get_neo4j_config (user_id )
542568 nebular_config = APIConfig .get_nebular_config (user_id )
569+ polardb_config = APIConfig .get_polardb_config (user_id )
543570 internet_config = (
544571 APIConfig .get_internet_config ()
545572 if os .getenv ("ENABLE_INTERNET" , "false" ).lower () == "true"
@@ -549,6 +576,7 @@ def create_user_config(user_name: str, user_id: str) -> tuple[MOSConfig, General
549576 "neo4j-community" : neo4j_community_config ,
550577 "neo4j" : neo4j_config ,
551578 "nebular" : nebular_config ,
579+ "polardb" : polardb_config ,
552580 }
553581 graph_db_backend = os .getenv ("NEO4J_BACKEND" , "neo4j-community" ).lower ()
554582 if graph_db_backend in graph_db_backend_map :
@@ -607,10 +635,12 @@ def get_default_cube_config() -> GeneralMemCubeConfig | None:
607635 neo4j_community_config = APIConfig .get_neo4j_community_config (user_id = "default" )
608636 neo4j_config = APIConfig .get_neo4j_config (user_id = "default" )
609637 nebular_config = APIConfig .get_nebular_config (user_id = "default" )
638+ polardb_config = APIConfig .get_polardb_config (user_id = "default" )
610639 graph_db_backend_map = {
611640 "neo4j-community" : neo4j_community_config ,
612641 "neo4j" : neo4j_config ,
613642 "nebular" : nebular_config ,
643+ "polardb" : polardb_config ,
614644 }
615645 internet_config = (
616646 APIConfig .get_internet_config ()
0 commit comments