Documentation
¶
Index ¶
- type Config
- type DatabaseConfig
- type EmailConfig
- type LoaderOptions
- type MockConfigBuilder
- func (b *MockConfigBuilder) Build() *Config
- func (b *MockConfigBuilder) WithAccessTokenDuration(duration string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithCustomDatabase(database DatabaseConfig) *MockConfigBuilder
- func (b *MockConfigBuilder) WithCustomEmail(email EmailConfig) *MockConfigBuilder
- func (b *MockConfigBuilder) WithCustomServer(server ServerConfig) *MockConfigBuilder
- func (b *MockConfigBuilder) WithDatabaseHost(host string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithDatabaseName(name string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithDatabasePassword(password string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithDatabasePort(port string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithDatabaseSSLMode(sslMode string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithDatabaseUser(username string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithEmailFrom(email, name string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithEmailHost(host string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithEmailPort(port string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithPassphrase(passphrase string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithRefreshTokenDuration(duration string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithSecret(secret string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithServerEnv(env string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithServerHost(host string) *MockConfigBuilder
- func (b *MockConfigBuilder) WithServerPort(port string) *MockConfigBuilder
- type PlanConfig
- type PlanFeatures
- type RevenueCatConfig
- type RevenueCatProductConfig
- type ServerConfig
- type StripeConfig
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶ added in v1.28.0
type Config struct {
Server ServerConfig `mapstructure:"server"`
Database DatabaseConfig `mapstructure:"database"`
Email EmailConfig `mapstructure:"email"`
Stripe StripeConfig `mapstructure:"stripe"`
RevenueCat RevenueCatConfig `mapstructure:"revenuecat"`
}
Config holds all application configuration
func Load ¶ added in v1.28.0
func Load(opts ...LoaderOptions) (*Config, error)
Load loads configuration from file and environment variables
func NewMockConfig ¶ added in v1.28.0
func NewMockConfig() *Config
NewMockConfig creates a mock configuration for testing purposes This can be used in any test across the project without needing actual config files
Example (ServiceTest) ¶
Example: Using mock config in a service test
// In your service tests, just import the config package and use the mock cfg := NewMockConfig() // Use the config in your service initialization _ = cfg.Server.Port _ = cfg.Database.Host // ... your service code
type DatabaseConfig ¶ added in v1.28.0
type DatabaseConfig struct {
Name string `mapstructure:"name"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
Host string `mapstructure:"host"`
Port string `mapstructure:"port"`
LogMode bool `mapstructure:"log_mode"`
SSLMode string `mapstructure:"ssl_mode"`
}
DatabaseConfig contains database-related configuration
type EmailConfig ¶ added in v1.28.0
type EmailConfig struct {
Host string `mapstructure:"host"`
Port string `mapstructure:"port"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
FromName string `mapstructure:"from_name"`
FromEmail string `mapstructure:"from_email"`
Admin string `mapstructure:"admin"`
BCC string `mapstructure:"bcc"` // BCC email for all outgoing emails
// AWS SES specific fields
AccessKey string `mapstructure:"access_key"` // AWS Access Key ID
SecretKey string `mapstructure:"secret_key"` // AWS Secret Access Key
Region string `mapstructure:"region"` // AWS Region (e.g., us-east-1)
// Gmail API specific fields
GmailClientID string `mapstructure:"gmail_client_id"` // Gmail OAuth2 Client ID
GmailClientSecret string `mapstructure:"gmail_client_secret"` // Gmail OAuth2 Client Secret
GmailRefreshToken string `mapstructure:"gmail_refresh_token"` // Gmail OAuth2 Refresh Token
}
EmailConfig contains email-related configuration
type LoaderOptions ¶ added in v1.28.0
LoaderOptions contains options for loading configuration
type MockConfigBuilder ¶ added in v1.28.0
type MockConfigBuilder struct {
// contains filtered or unexported fields
}
MockConfigBuilder provides a fluent interface for building mock configs
func NewMockBuilder ¶ added in v1.28.0
func NewMockBuilder() *MockConfigBuilder
NewMockBuilder creates a new mock config builder
Example (CustomScenario) ¶
Example: Using builder for specific test scenarios
// Create a config with specific values for your test
cfg := NewMockBuilder().
WithServerPort("8080").
WithDatabaseName("integration_test_db").
WithPassphrase("my-test-passphrase").
Build()
// Use in your test
_ = cfg
Example (Environments) ¶
Example: Testing different environments
// Development config
devCfg := NewMockBuilder().
WithServerEnv("dev").
WithDatabaseHost("localhost").
Build()
// Production config
prodCfg := NewMockBuilder().
WithServerEnv("prod").
WithDatabaseHost("prod-db.internal").
WithDatabaseSSLMode("require").
Build()
_ = devCfg
_ = prodCfg
func (*MockConfigBuilder) Build ¶ added in v1.28.0
func (b *MockConfigBuilder) Build() *Config
Build returns the built config
func (*MockConfigBuilder) WithAccessTokenDuration ¶ added in v1.28.0
func (b *MockConfigBuilder) WithAccessTokenDuration(duration string) *MockConfigBuilder
WithAccessTokenDuration sets access token expiration
func (*MockConfigBuilder) WithCustomDatabase ¶ added in v1.28.0
func (b *MockConfigBuilder) WithCustomDatabase(database DatabaseConfig) *MockConfigBuilder
WithCustomDatabase sets a custom database config
func (*MockConfigBuilder) WithCustomEmail ¶ added in v1.28.0
func (b *MockConfigBuilder) WithCustomEmail(email EmailConfig) *MockConfigBuilder
WithCustomEmail sets a custom email config
func (*MockConfigBuilder) WithCustomServer ¶ added in v1.28.0
func (b *MockConfigBuilder) WithCustomServer(server ServerConfig) *MockConfigBuilder
WithCustomServer sets a custom server config
func (*MockConfigBuilder) WithDatabaseHost ¶ added in v1.28.0
func (b *MockConfigBuilder) WithDatabaseHost(host string) *MockConfigBuilder
WithDatabaseHost sets the database host
func (*MockConfigBuilder) WithDatabaseName ¶ added in v1.28.0
func (b *MockConfigBuilder) WithDatabaseName(name string) *MockConfigBuilder
WithDatabaseName sets the database name
func (*MockConfigBuilder) WithDatabasePassword ¶ added in v1.28.0
func (b *MockConfigBuilder) WithDatabasePassword(password string) *MockConfigBuilder
WithDatabasePassword sets the database password
func (*MockConfigBuilder) WithDatabasePort ¶ added in v1.28.0
func (b *MockConfigBuilder) WithDatabasePort(port string) *MockConfigBuilder
WithDatabasePort sets the database port
func (*MockConfigBuilder) WithDatabaseSSLMode ¶ added in v1.28.0
func (b *MockConfigBuilder) WithDatabaseSSLMode(sslMode string) *MockConfigBuilder
WithDatabaseSSLMode sets the database SSL mode
func (*MockConfigBuilder) WithDatabaseUser ¶ added in v1.28.0
func (b *MockConfigBuilder) WithDatabaseUser(username string) *MockConfigBuilder
WithDatabaseUser sets the database username
func (*MockConfigBuilder) WithEmailFrom ¶ added in v1.28.0
func (b *MockConfigBuilder) WithEmailFrom(email, name string) *MockConfigBuilder
WithEmailFrom sets the email from address
func (*MockConfigBuilder) WithEmailHost ¶ added in v1.28.0
func (b *MockConfigBuilder) WithEmailHost(host string) *MockConfigBuilder
WithEmailHost sets the email host
func (*MockConfigBuilder) WithEmailPort ¶ added in v1.28.0
func (b *MockConfigBuilder) WithEmailPort(port string) *MockConfigBuilder
WithEmailPort sets the email port
func (*MockConfigBuilder) WithPassphrase ¶ added in v1.28.0
func (b *MockConfigBuilder) WithPassphrase(passphrase string) *MockConfigBuilder
WithPassphrase sets the server passphrase
func (*MockConfigBuilder) WithRefreshTokenDuration ¶ added in v1.28.0
func (b *MockConfigBuilder) WithRefreshTokenDuration(duration string) *MockConfigBuilder
WithRefreshTokenDuration sets refresh token expiration
func (*MockConfigBuilder) WithSecret ¶ added in v1.28.0
func (b *MockConfigBuilder) WithSecret(secret string) *MockConfigBuilder
WithSecret sets the JWT secret
func (*MockConfigBuilder) WithServerEnv ¶ added in v1.28.0
func (b *MockConfigBuilder) WithServerEnv(env string) *MockConfigBuilder
WithServerEnv sets the server environment
func (*MockConfigBuilder) WithServerHost ¶ added in v1.28.0
func (b *MockConfigBuilder) WithServerHost(host string) *MockConfigBuilder
WithServerHost sets the server host
func (*MockConfigBuilder) WithServerPort ¶ added in v1.28.0
func (b *MockConfigBuilder) WithServerPort(port string) *MockConfigBuilder
WithServerPort sets the server port
type PlanConfig ¶ added in v1.28.0
type PlanConfig struct {
Code string `mapstructure:"code"` // Plan code (e.g., "personal-monthly")
Name string `mapstructure:"name"` // Display name (e.g., "Premium")
BillingCycle string `mapstructure:"billing_cycle"` // "monthly" or "yearly"
PriceCents int `mapstructure:"price_cents"` // Price in cents
Currency string `mapstructure:"currency"` // Currency code (e.g., "USD")
TrialDays int `mapstructure:"trial_days"` // Trial period in days
MaxUsers *int `mapstructure:"max_users"` // Max users (nil = unlimited)
MaxCollections *int `mapstructure:"max_collections"` // Max collections (nil = unlimited)
MaxItems *int `mapstructure:"max_items"` // Max items (nil = unlimited)
StripePriceID string `mapstructure:"stripe_price_id"` // Stripe Price ID
Features PlanFeatures `mapstructure:"features"` // Feature flags
}
PlanConfig defines a subscription plan
type PlanFeatures ¶ added in v1.28.0
type PlanFeatures struct {
Sharing bool `mapstructure:"sharing"` // Item sharing enabled
Teams bool `mapstructure:"teams"` // Team management enabled
Audit bool `mapstructure:"audit"` // Audit logs enabled
SSO bool `mapstructure:"sso"` // Single Sign-On enabled
APIAccess bool `mapstructure:"api_access"` // API access enabled
PrioritySupport bool `mapstructure:"priority_support"` // Priority support enabled
}
PlanFeatures defines feature availability for a plan
type RevenueCatConfig ¶ added in v1.28.0
type RevenueCatConfig struct {
WebhookSecret string `mapstructure:"webhook_secret"` // Webhook authorization header value
Products []RevenueCatProductConfig `mapstructure:"products"` // Product ID to plan mappings
}
RevenueCatConfig contains RevenueCat in-app purchase configuration
type RevenueCatProductConfig ¶ added in v1.28.0
type RevenueCatProductConfig struct {
ProductID string `mapstructure:"product_id"` // RevenueCat product ID (e.g., "passwall_pro_monthly")
PlanCode string `mapstructure:"plan_code"` // Internal plan code (e.g., "pro-monthly")
BillingCycle string `mapstructure:"billing_cycle"` // "monthly" or "yearly"
}
RevenueCatProductConfig maps a RevenueCat product ID to an internal plan
type ServerConfig ¶ added in v1.28.0
type ServerConfig struct {
Env string `mapstructure:"env"`
Host string `mapstructure:"host"`
Port string `mapstructure:"port"`
Domain string `mapstructure:"domain"`
Passphrase string `mapstructure:"passphrase"`
Secret string `mapstructure:"secret"`
Timeout int `mapstructure:"timeout"`
GeneratedPasswordLength int `mapstructure:"generated_password_length"`
AccessTokenExpireDuration string `mapstructure:"access_token_expire_duration"`
RefreshTokenExpireDuration string `mapstructure:"refresh_token_expire_duration"`
FrontendURL string `mapstructure:"frontend_url"`
RecaptchaSecretKey string `mapstructure:"recaptcha_secret_key"`
RecaptchaThreshold float64 `mapstructure:"recaptcha_threshold"`
}
ServerConfig contains server-related configuration
type StripeConfig ¶ added in v1.28.0
type StripeConfig struct {
SecretKey string `mapstructure:"secret_key"` // Stripe Secret Key (sk_test_... or sk_live_...)
WebhookSecret string `mapstructure:"webhook_secret"` // Webhook signing secret
PublishableKey string `mapstructure:"publishable_key"` // Publishable key for frontend
// Plan definitions
Plans []PlanConfig `mapstructure:"plans"`
}
StripeConfig contains Stripe payment configuration