baize.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package baize
  2. import (
  3. "git.sxidc.com/go-framework/baize/framework/core/api"
  4. "git.sxidc.com/go-framework/baize/framework/core/application"
  5. "git.sxidc.com/go-framework/baize/framework/core/infrastructure"
  6. "git.sxidc.com/go-framework/baize/framework/core/mqtt_api"
  7. )
  8. func NewApplication(conf application.Config) *application.App {
  9. // 创建API
  10. apiConfig := conf.ApiConfig
  11. apiOptions := []api.Option{
  12. api.WithUrlPrefix(apiConfig.UrlPrefix),
  13. api.WithPort(apiConfig.Port),
  14. api.WithLogSkipPaths(apiConfig.LogSkipPaths...),
  15. }
  16. if conf.DumpPermissionItem != nil {
  17. apiOptions = append(apiOptions, api.WithDumpPermissionItemsOption(&api.DumpPermissionItemsOption{
  18. Namespace: conf.DumpPermissionItem.Namespace,
  19. Gateway: conf.DumpPermissionItem.Gateway,
  20. SaveDir: conf.DumpPermissionItem.SaveDir,
  21. }))
  22. }
  23. apiInstance := api.New(apiOptions...)
  24. // 创建基础设施
  25. infrastructureConfig := new(infrastructure.Config)
  26. infrastructureConfig.DatabaseConfig = conf.InfrastructureConfig.Database
  27. infrastructureConfig.CacheConfig = conf.InfrastructureConfig.Cache
  28. infrastructureConfig.MessageQueueConfig = conf.MessageQueue
  29. infrastructureInstance := infrastructure.NewInfrastructure(*infrastructureConfig)
  30. app := application.New(apiInstance, infrastructureInstance)
  31. // 添加MqttApi
  32. if conf.MqttApiConfig != nil {
  33. mqttConfig := conf.MqttApiConfig
  34. mqttApi, err := mqtt_api.New(mqtt_api.WithTopicPrefix(mqttConfig.TopicPrefix),
  35. mqtt_api.WithLogSkipPaths(mqttConfig.LogSkipPaths...),
  36. mqtt_api.WithMqttOptions(&mqtt_api.MqttClientOptions{
  37. UserName: mqttConfig.MqttConfig.UserName,
  38. Password: mqttConfig.MqttConfig.Password,
  39. Address: mqttConfig.MqttConfig.Address,
  40. ClientID: mqttConfig.MqttConfig.ClientID,
  41. KeepAliveSec: mqttConfig.MqttConfig.KeepAliveSec,
  42. PingTimeoutSec: mqttConfig.MqttConfig.PingTimeoutSec,
  43. WriteTimeoutSec: mqttConfig.MqttConfig.WriteTimeoutSec,
  44. }))
  45. if err != nil {
  46. panic(err)
  47. }
  48. app.AddMqttApi(mqttApi)
  49. }
  50. return app
  51. }
  52. func DestroyApplication(app *application.App) {
  53. if app == nil {
  54. return
  55. }
  56. mqttApi := app.MqttApi()
  57. if mqttApi != nil {
  58. mqtt_api.Destroy(mqttApi)
  59. }
  60. infrastructure.DestroyInfrastructure(app.Infrastructure())
  61. }