application.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package application
  2. import (
  3. "git.sxidc.com/go-framework/baize/api"
  4. "git.sxidc.com/go-framework/baize/binding"
  5. "git.sxidc.com/go-framework/baize/infrastructure"
  6. "git.sxidc.com/go-framework/baize/infrastructure/logger"
  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. // Binder 创建Binder
  52. func (app *App) Binder(routerVersion string) *binding.Binder {
  53. var router api.Router
  54. if routerVersion == "" {
  55. router = app.apiInstance.RootRouter()
  56. } else {
  57. router = app.apiInstance.PrefixRouter().VersionedRouter(routerVersion)
  58. }
  59. return binding.NewBinder(router, app.infrastructureInstance)
  60. }