baize.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  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. SaveDir: conf.DumpPermissionItem.SaveDir,
  19. }))
  20. }
  21. apiInstance := api.New(apiOptions...)
  22. // 创建基础设施
  23. infrastructureConfig := new(infrastructure.Config)
  24. infrastructureConfig.DatabaseConfig = conf.InfrastructureConfig.Database
  25. infrastructureConfig.CacheConfig = conf.InfrastructureConfig.Cache
  26. infrastructureConfig.MessageQueueConfig = conf.MessageQueue
  27. infrastructureInstance := infrastructure.NewInfrastructure(*infrastructureConfig)
  28. app := application.New(apiInstance, infrastructureInstance)
  29. // 添加MqttApi
  30. if conf.MqttApiConfig != nil {
  31. mqttConfig := conf.MqttApiConfig
  32. mqttApi, err := mqtt_api.New(mqtt_api.WithTopicPrefix(mqttConfig.TopicPrefix),
  33. mqtt_api.WithLogSkipPaths(mqttConfig.LogSkipPaths...),
  34. mqtt_api.WithMqttOptions(&mqtt_api.MqttClientOptions{
  35. UserName: mqttConfig.MqttConfig.UserName,
  36. Password: mqttConfig.MqttConfig.Password,
  37. Address: mqttConfig.MqttConfig.Address,
  38. ClientID: mqttConfig.MqttConfig.ClientID,
  39. KeepAliveSec: mqttConfig.MqttConfig.KeepAliveSec,
  40. PingTimeoutSec: mqttConfig.MqttConfig.PingTimeoutSec,
  41. WriteTimeoutSec: mqttConfig.MqttConfig.WriteTimeoutSec,
  42. }))
  43. if err != nil {
  44. panic(err)
  45. }
  46. app.AddMqttApi(mqttApi)
  47. }
  48. return app
  49. }
  50. func DestroyApplication(app *application.App) {
  51. if app == nil {
  52. return
  53. }
  54. mqttApi := app.MqttApi()
  55. if mqttApi != nil {
  56. mqtt_api.Destroy(mqttApi)
  57. }
  58. infrastructure.DestroyInfrastructure(app.Infrastructure())
  59. }