baize.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package baize
  2. import (
  3. "git.sxidc.com/go-framework/baize/framwork/api"
  4. "git.sxidc.com/go-framework/baize/framwork/application"
  5. "git.sxidc.com/go-framework/baize/framwork/infrastructure"
  6. "git.sxidc.com/go-framework/baize/framwork/infrastructure/database/data_service"
  7. "git.sxidc.com/go-framework/baize/framwork/infrastructure/database/operations"
  8. )
  9. func NewApplication(conf application.Config) *application.App {
  10. // 创建API
  11. apiConfig := conf.ApiConfig
  12. apiInstance := api.New(api.WithUrlPrefix(apiConfig.UrlPrefix), api.WithPort(apiConfig.Port))
  13. // 创建基础设施
  14. var infrastructureInstance *infrastructure.Infrastructure
  15. infrastructureConfig := infrastructure.Config{
  16. DatabaseConfig: infrastructure.DatabaseConfig{},
  17. }
  18. if conf.InfrastructureConfig.Database.Operations != nil {
  19. operationsConfig := conf.InfrastructureConfig.Database.Operations
  20. if operationsConfig != nil {
  21. infrastructureConfig.DatabaseConfig.Operations = &operations.Config{
  22. UserName: operationsConfig.UserName,
  23. Password: operationsConfig.Password,
  24. Address: operationsConfig.Address,
  25. Port: operationsConfig.Port,
  26. Database: operationsConfig.Database,
  27. MaxConnections: operationsConfig.MaxConnections,
  28. MaxIdleConnections: operationsConfig.MaxIdleConnections,
  29. }
  30. }
  31. }
  32. if conf.InfrastructureConfig.Database.DataService != nil {
  33. dataServiceConfig := conf.InfrastructureConfig.Database.DataService
  34. if dataServiceConfig != nil {
  35. infrastructureConfig.DatabaseConfig.DataService = &data_service.Config{
  36. Token: dataServiceConfig.Token,
  37. BaseUrl: dataServiceConfig.BaseUrl,
  38. GrpcAddress: dataServiceConfig.GrpcAddress,
  39. Namespace: dataServiceConfig.Namespace,
  40. DataSource: dataServiceConfig.DataSource,
  41. TimeoutSec: dataServiceConfig.TimeoutSec,
  42. }
  43. }
  44. }
  45. infrastructureInstance = infrastructure.NewInfrastructure(infrastructureConfig)
  46. return application.New(apiInstance, infrastructureInstance)
  47. }
  48. func DestroyApplication(app *application.App) {
  49. if app == nil {
  50. return
  51. }
  52. infrastructure.DestroyInfrastructure(app.Infrastructure())
  53. }