Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
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"`
Exchange *ExchangeRate `envconfig:"EXCHANGE_RATE"`
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
CurrencyConverter money.CurrencyConverter
CurrencyRegistry *currency.Registry
PaymentProvider provider.PaymentProvider
EventBus eventbus.Bus
Logger *slog.Logger
Config *App
}
Deps holds all infrastructure dependencies for building the app and services.
type ExchangeRate ¶
type ExchangeRate struct {
ApiKey string `envconfig:"API_KEY"`
ApiUrl string `envconfig:"API_URL" default:""`
CacheTTL time.Duration `envconfig:"CACHE_TTL" default:"15m"`
HTTPTimeout time.Duration `envconfig:"HTTP_TIMEOUT" default:"10s"`
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"`
CachePrefix string `envconfig:"CACHE_PREFIX" default:"exr:rate:"`
CacheUrl string `envconfig:"CACHE_URL"`
}
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 {
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/"`
}
Click to show internal directories.
Click to hide internal directories.