Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func FindEnvTest ¶ added in v1.3.0
FindEnvTest searches for the nearest file If filename is empty, it searches for .env
Types ¶
type App ¶
type App struct {
Env string `envconfig:"APP_ENV" default:"development"`
Server *Server `envconfig:"SERVER"`
Log *Log `envconfig:"LOG"`
DB *DB `envconfig:"DATABASE"`
Auth *Auth `envconfig:"AUTH"`
ExchangeRateCache *ExchangeRateCache `envconfig:"EXCHANGE_RATE_CACHE"`
ExchangeRateAPIProviders *ExchangeRateProviders `envconfig:"EXCHANGE_RATE_PROVIDER"`
Redis *Redis `envconfig:"REDIS"`
RateLimit *RateLimit `envconfig:"RATE_LIMIT"`
PaymentProviders *PaymentProviders `envconfig:"PAYMENT_PROVIDER"`
Fee *Fee `envconfig:"FEE"`
}
type Deps ¶
type Deps struct {
Uow repository.UnitOfWork
ExchangeRateProvider exchange.Exchange
ExchangeRateRegistryProvider registry.Provider
CurrencyRegistry registry.Provider
PaymentProvider payment.Payment
EventBus eventbus.Bus
Logger *slog.Logger
Config *App
}
Deps holds all infrastructure dependencies for building the app and services.
type ExchangeRateApi ¶ added in v1.3.0
type ExchangeRateCache ¶ added in v1.3.0
type ExchangeRateCache struct {
TTL time.Duration `envconfig:"TTL" default:"15m"`
MaxRetries int `envconfig:"MAX_RETRIES" default:"3"`
RequestsPerMinute int `envconfig:"REQUESTS_PER_MINUTE" default:"60"`
BurstSize int `envconfig:"BURST_SIZE" default:"10"`
EnableFallback bool `envconfig:"ENABLE_FALLBACK" default:"true"`
FallbackTTL time.Duration `envconfig:"FALLBACK_TTL" default:"1h"`
Prefix string `envconfig:"CACHE_PREFIX" default:"exr:rate:"`
Url string `envconfig:"URL"`
}
type ExchangeRateProviders ¶ added in v1.3.0
type ExchangeRateProviders struct {
ExchangeRateApi *ExchangeRateApi `envconfig:"EXCHANGERATE"`
}
type Fee ¶
type Fee struct {
ServiceFeePercentage float64 `envconfig:"SERVICE_FEE_PERCENTAGE" default:"0.01"`
}
type PaymentProviders ¶
type PaymentProviders struct {
Stripe *Stripe `envconfig:"STRIPE"`
}
type Redis ¶
type Redis struct {
URL string `envconfig:"URL" default:"redis://localhost:6379/0"`
KeyPrefix string `envconfig:"KEY_PREFIX" default:""`
PoolSize int `envconfig:"POOL_SIZE" default:"10"`
DialTimeout time.Duration `envconfig:"DIAL_TIMEOUT" default:"5s"`
ReadTimeout time.Duration `envconfig:"READ_TIMEOUT" default:"3s"`
WriteTimeout time.Duration `envconfig:"WRITE_TIMEOUT" default:"3s"`
}
type Stripe ¶
type Stripe struct {
Env string `envconfig:"ENV" default:"test oneof(test, development, production)"`
ApiKey string `envconfig:"API_KEY"`
SigningSecret string `envconfig:"SIGNING_SECRET"`
SuccessPath string `envconfig:"SUCCESS_PATH" default:"http://localhost:3000/payment/stripe/success/"`
CancelPath string `envconfig:"CANCEL_PATH" default:"http://localhost:3000/payment/stripe/cancel/"`
OnboardingReturnURL string `envconfig:"ONBOARDING_RETURN_URL" default:"http://localhost:3000/onboarding/return"`
OnboardingRefreshURL string `envconfig:"ONBOARDING_REFRESH_URL" default:"http://localhost:3000/onboarding/refresh"`
SkipTLSVerify bool `envconfig:"SKIP_TLS_VERIFY" default:"false"` // Skip TLS verification for development
}
Click to show internal directories.
Click to hide internal directories.