config.go 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. package app
  2. import (
  3. "fmt"
  4. "github.com/go-playground/validator/v10"
  5. )
  6. type Config struct {
  7. ServerPort int16 `envconfig:"SERVER_PORT" validate:"required"`
  8. PluginInnerApiKey string `envconfig:"PLUGIN_INNER_API_KEY" validate:"required"`
  9. PluginInnerApiURL string `envconfig:"PLUGIN_INNER_API_URL" validate:"required"`
  10. PluginRemoteInstallingHost string `envconfig:"PLUGIN_REMOTE_INSTALLING_HOST"`
  11. PluginRemoteInstallingPort uint16 `envconfig:"PLUGIN_REMOTE_INSTALLING_PORT"`
  12. PluginRemoteInstallingEnabled bool `envconfig:"PLUGIN_REMOTE_INSTALLING_ENABLED"`
  13. PluginRemoteInstallingMaxConn int `envconfig:"PLUGIN_REMOTE_INSTALLING_MAX_CONN"`
  14. PluginRemoteInstallServerEventLoopNums int `envconfig:"PLUGIN_REMOTE_INSTALL_SERVER_EVENT_LOOP_NUMS"`
  15. StoragePath string `envconfig:"STORAGE_PATH" validate:"required"`
  16. ProcessCachingPath string `envconfig:"PROCESS_CACHING_PATH" validate:"required"`
  17. Platform PlatformType `envconfig:"PLATFORM" validate:"required"`
  18. RoutinePoolSize int `envconfig:"ROUTINE_POOL_SIZE" validate:"required"`
  19. RedisHost string `envconfig:"REDIS_HOST" validate:"required"`
  20. RedisPort int16 `envconfig:"REDIS_PORT" validate:"required"`
  21. RedisPass string `envconfig:"REDIS_PASS" validate:"required"`
  22. DBUsername string `envconfig:"DB_USERNAME" validate:"required"`
  23. DBPassword string `envconfig:"DB_PASSWORD" validate:"required"`
  24. DBHost string `envconfig:"DB_HOST" validate:"required"`
  25. DBPort int16 `envconfig:"DB_PORT" validate:"required"`
  26. DBDatabase string `envconfig:"DB_DATABASE" validate:"required"`
  27. DBSslMode string `envconfig:"DB_SSL_MODE" validate:"required,oneof=disable require"`
  28. LifetimeCollectionHeartbeatInterval int `envconfig:"LIFETIME_COLLECTION_HEARTBEAT_INTERVAL" validate:"required"`
  29. LifetimeCollectionGCInterval int `envconfig:"LIFETIME_COLLECTION_GC_INTERVAL" validate:"required"`
  30. LifetimeStateGCInterval int `envconfig:"LIFETIME_STATE_GC_INTERVAL" validate:"required"`
  31. DifyInvocationConnectionIdleTimeout int `envconfig:"DIFY_INVOCATION_CONNECTION_IDLE_TIMEOUT" validate:"required"`
  32. }
  33. func (c *Config) Validate() error {
  34. validator := validator.New()
  35. err := validator.Struct(c)
  36. if err != nil {
  37. return err
  38. }
  39. if c.PluginRemoteInstallingEnabled {
  40. if c.PluginRemoteInstallingHost == "" {
  41. return fmt.Errorf("plugin remote installing host is empty")
  42. }
  43. if c.PluginRemoteInstallingPort == 0 {
  44. return fmt.Errorf("plugin remote installing port is empty")
  45. }
  46. if c.PluginRemoteInstallingMaxConn == 0 {
  47. return fmt.Errorf("plugin remote installing max connection is empty")
  48. }
  49. if c.PluginRemoteInstallServerEventLoopNums == 0 {
  50. return fmt.Errorf("plugin remote install server event loop nums is empty")
  51. }
  52. }
  53. return nil
  54. }
  55. type PlatformType string
  56. const (
  57. PLATFORM_LOCAL PlatformType = "local"
  58. PLATFORM_AWS_LAMBDA PlatformType = "aws_lambda"
  59. )