1+ import json
12import os
23
34from typing import Any
@@ -218,6 +219,32 @@ def get_neo4j_shared_config(user_id: str | None = None) -> dict[str, Any]:
218219 "embedding_dimension" : 3072 ,
219220 }
220221
222+ @staticmethod
223+ def get_nebular_config (user_id : str | None = None ) -> dict [str , Any ]:
224+ """Get Nebular configuration."""
225+ return {
226+ "uri" : json .loads (os .getenv ("NEBULAR_HOSTS" , '["localhost"]' )),
227+ "user" : os .getenv ("NEBULAR_USER" , "root" ),
228+ "password" : os .getenv ("NEBULAR_PASSWORD" , "xxxxxx" ),
229+ "space" : os .getenv ("NEBULAR_SPACE" , "shared-tree-textual-memory" ),
230+ "user_name" : f"memos{ user_id .replace ('-' , '' )} " ,
231+ "use_multi_db" : False ,
232+ "auto_create" : True ,
233+ "embedding_dimension" : 3072 ,
234+ }
235+
236+ @staticmethod
237+ def get_mysql_config () -> dict [str , Any ]:
238+ """Get MySQL configuration."""
239+ return {
240+ "host" : os .getenv ("MYSQL_HOST" , "localhost" ),
241+ "port" : int (os .getenv ("MYSQL_PORT" , "3306" )),
242+ "username" : os .getenv ("MYSQL_USERNAME" , "root" ),
243+ "password" : os .getenv ("MYSQL_PASSWORD" , "12345678" ),
244+ "database" : os .getenv ("MYSQL_DATABASE" , "memos_users" ),
245+ "charset" : os .getenv ("MYSQL_CHARSET" , "utf8mb4" ),
246+ }
247+
221248 @staticmethod
222249 def get_scheduler_config () -> dict [str , Any ]:
223250 """Get scheduler configuration."""
@@ -294,6 +321,7 @@ def get_product_default_config() -> dict[str, Any]:
294321 "vllm" : vllm_config ,
295322 }
296323 backend = os .getenv ("MOS_CHAT_MODEL_PROVIDER" , "openai" )
324+ mysql_config = APIConfig .get_mysql_config ()
297325 config = {
298326 "user_id" : os .getenv ("MOS_USER_ID" , "root" ),
299327 "chat_model" : {"backend" : backend , "config" : backend_model [backend ]},
@@ -330,6 +358,13 @@ def get_product_default_config() -> dict[str, Any]:
330358 else :
331359 config ["enable_mem_scheduler" ] = False
332360
361+ # Add user manager configuration if enabled
362+ if os .getenv ("MOS_USER_MANAGER_BACKEND" , "sqlite" ).lower () == "mysql" :
363+ config ["user_manager" ] = {
364+ "backend" : "mysql" ,
365+ "config" : mysql_config ,
366+ }
367+
333368 return config
334369
335370 @staticmethod
@@ -372,6 +407,7 @@ def create_user_config(user_name: str, user_id: str) -> tuple[MOSConfig, General
372407 openai_config = APIConfig .get_openai_config ()
373408 qwen_config = APIConfig .qwen_config ()
374409 vllm_config = APIConfig .vllm_config ()
410+ mysql_config = APIConfig .get_mysql_config ()
375411 backend = os .getenv ("MOS_CHAT_MODEL_PROVIDER" , "openai" )
376412 backend_model = {
377413 "openai" : openai_config ,
@@ -417,10 +453,18 @@ def create_user_config(user_name: str, user_id: str) -> tuple[MOSConfig, General
417453 else :
418454 config_dict ["enable_mem_scheduler" ] = False
419455
456+ # Add user manager configuration if enabled
457+ if os .getenv ("MOS_USER_MANAGER_BACKEND" , "sqlite" ).lower () == "mysql" :
458+ config_dict ["user_manager" ] = {
459+ "backend" : "mysql" ,
460+ "config" : mysql_config ,
461+ }
462+
420463 default_config = MOSConfig (** config_dict )
421464
422465 neo4j_community_config = APIConfig .get_neo4j_community_config (user_id )
423466 neo4j_config = APIConfig .get_neo4j_config (user_id )
467+ nebular_config = APIConfig .get_nebular_config (user_id )
424468 internet_config = (
425469 APIConfig .get_internet_config ()
426470 if os .getenv ("ENABLE_INTERNET" , "false" ).lower () == "true"
@@ -429,6 +473,7 @@ def create_user_config(user_name: str, user_id: str) -> tuple[MOSConfig, General
429473 graph_db_backend_map = {
430474 "neo4j-community" : neo4j_community_config ,
431475 "neo4j" : neo4j_config ,
476+ "nebular" : nebular_config ,
432477 }
433478 graph_db_backend = os .getenv ("NEO4J_BACKEND" , "neo4j-community" ).lower ()
434479 if graph_db_backend in graph_db_backend_map :
@@ -475,9 +520,11 @@ def get_default_cube_config() -> GeneralMemCubeConfig | None:
475520 openai_config = APIConfig .get_openai_config ()
476521 neo4j_community_config = APIConfig .get_neo4j_community_config (user_id = "default" )
477522 neo4j_config = APIConfig .get_neo4j_config (user_id = "default" )
523+ nebular_config = APIConfig .get_nebular_config (user_id = "default" )
478524 graph_db_backend_map = {
479525 "neo4j-community" : neo4j_community_config ,
480526 "neo4j" : neo4j_config ,
527+ "nebular" : nebular_config ,
481528 }
482529 internet_config = (
483530 APIConfig .get_internet_config ()
0 commit comments