application.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. package application
  2. import (
  3. "git.sxidc.com/go-framework/baize/framwork/core/api"
  4. "git.sxidc.com/go-framework/baize/framwork/core/infrastructure"
  5. "git.sxidc.com/go-framework/baize/framwork/core/infrastructure/logger"
  6. "git.sxidc.com/go-tools/utils/strutils"
  7. )
  8. type App struct {
  9. // api实例
  10. apiInstance *api.Api
  11. // 基础设施实例
  12. infrastructureInstance *infrastructure.Infrastructure
  13. // 日志
  14. loggerInstance *logger.Logger
  15. }
  16. // New 创建Application
  17. func New(api *api.Api, i *infrastructure.Infrastructure) *App {
  18. return &App{
  19. apiInstance: api,
  20. infrastructureInstance: i,
  21. }
  22. }
  23. // Start 运行应用
  24. func (app *App) Start() error {
  25. err := app.apiInstance.Start()
  26. if err != nil {
  27. return err
  28. }
  29. return nil
  30. }
  31. // Finish 终止应用
  32. func (app *App) Finish() error {
  33. err := app.apiInstance.Finish()
  34. if err != nil {
  35. return err
  36. }
  37. return nil
  38. }
  39. // Api 获取api实例
  40. func (app *App) Api() *api.Api {
  41. return app.apiInstance
  42. }
  43. // Infrastructure 获取Infrastructure实例
  44. func (app *App) Infrastructure() *infrastructure.Infrastructure {
  45. return app.infrastructureInstance
  46. }
  47. // Logger 获取logger实例
  48. func (app *App) Logger() *logger.Logger {
  49. return app.loggerInstance
  50. }
  51. const (
  52. RouterRoot = "root"
  53. RouterPrefix = "prefix"
  54. )
  55. // ChooseRouter 选择Router
  56. func (app *App) ChooseRouter(routerType string, version string) api.Router {
  57. var router api.Router
  58. switch routerType {
  59. case RouterRoot:
  60. router = app.Api().RootRouter()
  61. case RouterPrefix:
  62. router = app.Api().PrefixRouter()
  63. default:
  64. router = app.Api().PrefixRouter()
  65. }
  66. if strutils.IsStringNotEmpty(version) {
  67. router = router.VersionedRouter(version)
  68. }
  69. return router
  70. }