routers.go 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. package routers
  2. import (
  3. dataQuery "dbview/service/internal/modules/data_query"
  4. dqSer "dbview/service/internal/modules/data_query/service"
  5. "dbview/service/internal/modules/database_meta"
  6. dbSer "dbview/service/internal/modules/database_meta/service"
  7. storageRouter "dbview/service/internal/modules/db_conn_storage"
  8. storageService "dbview/service/internal/modules/db_conn_storage/service"
  9. connpool "dbview/service/internal/modules/connection_pool"
  10. "dbview/service/internal/common/manager/connection"
  11. storagemgr "dbview/service/internal/common/manager/storage"
  12. "dbview/service/internal/common/manager/task"
  13. "github.com/gin-gonic/gin"
  14. )
  15. // RegisterRoutes 注册所有模块路由(不依赖 bootstrap 包,避免导入环)
  16. func RegisterRoutes(engine *gin.Engine, storageManager interface{}, taskManager *task.Manager, connPool *connection.ConnectionPool) {
  17. // 1) 存储模块(db_conn_storage)
  18. if storageManager != nil {
  19. if typed, ok := storageManager.(storagemgr.StorageInterface); ok {
  20. storageService.Init(typed)
  21. }
  22. } else {
  23. storageService.Init(nil)
  24. panic("存储管理器未初始化成功")
  25. }
  26. storageRouter.RegisterRoutes(engine)
  27. // 2) 数据库操作模块(database_operations)
  28. // 创建 MetadataService:优先使用连接池(当 connPool 不为 nil 时)
  29. var metaSvc *dbSer.MetadataService
  30. if connPool != nil {
  31. metaSvc = dbSer.NewMetadataServiceWithPool(connPool)
  32. } else {
  33. // 回退到默认注入(此处传入 nils,实际应由具体 driver 注入)
  34. metaSvc = dbSer.NewMetadataService(nil, nil, nil, nil, nil)
  35. }
  36. database_meta.RegisterRoutes(engine, metaSvc)
  37. // 2.5) 连接池管理接口
  38. connpool.RegisterRoutes(engine, connPool)
  39. // 3) 数据查询模块(data_query):优先使用连接池创建 DataService
  40. var dataSvc *dqSer.DataService
  41. if connPool != nil && taskManager != nil {
  42. dataSvc = dqSer.NewDataService(dqSer.WithConnectionPool(connPool), dqSer.WithTaskManager(taskManager), dqSer.WithDataReader(nil))
  43. } else if connPool != nil {
  44. dataSvc = dqSer.NewDataService(dqSer.WithConnectionPool(connPool), dqSer.WithDataReader(nil))
  45. } else {
  46. dataSvc = dqSer.NewDataService(dqSer.WithDataReader(nil))
  47. }
  48. dataQuery.RegisterRoutes(engine, dataSvc)
  49. // 3) SQL 编辑器模块(sql_editor)
  50. // var sqlSvc *sqlService.SQLEditorService
  51. // if taskManager != nil {
  52. // sqlSvc = sqlService.NewSQLEditorService(nil, taskManager, nil)
  53. // } else {
  54. // sqlSvc = sqlService.NewSQLEditorService(nil, nil, nil)
  55. // }
  56. // sqlH := sqlHandler.NewSQLEditorHandler(sqlSvc, nil)
  57. // apiGroup := engine.Group("/api/v1")
  58. // sqleditor.RegisterSQLRoutes(apiGroup, sqlH)
  59. }