package routers import ( dataQuery "dbview/service/internal/modules/data_query" dqSer "dbview/service/internal/modules/data_query/service" "dbview/service/internal/modules/database_meta" dbSer "dbview/service/internal/modules/database_meta/service" storageRouter "dbview/service/internal/modules/db_conn_storage" storageService "dbview/service/internal/modules/db_conn_storage/service" connpool "dbview/service/internal/modules/connection_pool" "dbview/service/internal/common/manager/connection" storagemgr "dbview/service/internal/common/manager/storage" "dbview/service/internal/common/manager/task" "github.com/gin-gonic/gin" ) // RegisterRoutes 注册所有模块路由(不依赖 bootstrap 包,避免导入环) func RegisterRoutes(engine *gin.Engine, storageManager interface{}, taskManager *task.Manager, connPool *connection.ConnectionPool) { // 1) 存储模块(db_conn_storage) if storageManager != nil { if typed, ok := storageManager.(storagemgr.StorageInterface); ok { storageService.Init(typed) } } else { storageService.Init(nil) panic("存储管理器未初始化成功") } storageRouter.RegisterRoutes(engine) // 2) 数据库操作模块(database_operations) // 创建 MetadataService:优先使用连接池(当 connPool 不为 nil 时) var metaSvc *dbSer.MetadataService if connPool != nil { metaSvc = dbSer.NewMetadataServiceWithPool(connPool) } else { // 回退到默认注入(此处传入 nils,实际应由具体 driver 注入) metaSvc = dbSer.NewMetadataService(nil, nil, nil, nil, nil) } database_meta.RegisterRoutes(engine, metaSvc) // 2.5) 连接池管理接口 connpool.RegisterRoutes(engine, connPool) // 3) 数据查询模块(data_query):优先使用连接池创建 DataService var dataSvc *dqSer.DataService if connPool != nil && taskManager != nil { dataSvc = dqSer.NewDataService(dqSer.WithConnectionPool(connPool), dqSer.WithTaskManager(taskManager), dqSer.WithDataReader(nil)) } else if connPool != nil { dataSvc = dqSer.NewDataService(dqSer.WithConnectionPool(connPool), dqSer.WithDataReader(nil)) } else { dataSvc = dqSer.NewDataService(dqSer.WithDataReader(nil)) } dataQuery.RegisterRoutes(engine, dataSvc) // 3) SQL 编辑器模块(sql_editor) // var sqlSvc *sqlService.SQLEditorService // if taskManager != nil { // sqlSvc = sqlService.NewSQLEditorService(nil, taskManager, nil) // } else { // sqlSvc = sqlService.NewSQLEditorService(nil, nil, nil) // } // sqlH := sqlHandler.NewSQLEditorHandler(sqlSvc, nil) // apiGroup := engine.Group("/api/v1") // sqleditor.RegisterSQLRoutes(apiGroup, sqlH) }