config

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 9, 2025 License: MIT Imports: 10 Imported by: 0

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"`
}

func Load

func Load(envFilePath ...string) (*App, error)

type Auth

type Auth struct {
	Strategy string `envconfig:"STRATEGY" default:"jwt oneof(jwt, basic)"`
	Jwt      *Jwt   `envconfig:"JWT"`
}

type DB

type DB struct {
	Url string `envconfig:"URL"`
}

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 Jwt

type Jwt struct {
	Secret string        `envconfig:"SECRET" required:"true"`
	Expiry time.Duration `envconfig:"EXPIRY" default:"24h"`
}

type Log

type Log struct {
	Level      string `envconfig:"LEVEL" default:"info"`
	Format     string `envconfig:"FORMAT" default:"json"`
	TimeFormat string `envconfig:"TIME_FORMAT" default:"2006-01-02 15:04:05"`
	Prefix     string `envconfig:"PREFIX" default:"[fintech]"`
}

type PaymentProviders

type PaymentProviders struct {
	Stripe *Stripe `envconfig:"STRIPE"`
}

type RateLimit

type RateLimit struct {
	MaxRequests int           `envconfig:"MAX_REQUESTS" default:"100"`
	Window      time.Duration `envconfig:"WINDOW" default:"1m"`
}

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 Server

type Server struct {
	Scheme string `envconfig:"SCHEME" default:"http"`
	Host   string `envconfig:"HOST" default:"localhost"`
	Port   int    `envconfig:"PORT" default:"3000"`
}

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/"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL