Documentation
¶
Overview ¶
Package infrastructure assembles configured, named services over Foundry's existing providers. Configuration and graph validation are pure; resources are acquired only when the containing application boots.
Index ¶
- Constants
- Variables
- func BrokerKey(name pubsub.ConnectionName) foundation.Key[*pubsub.Broker]
- func BrokerProvider(name pubsub.ConnectionName) foundation.ProviderID
- func BrokerSettingsConfigSchema() (*config.Schema[BrokerSettings], error)
- func CacheKey(name cache.StoreName) foundation.Key[*cache.Store]
- func CacheProvider(name cache.StoreName) foundation.ProviderID
- func CacheSettingsConfigSchema() (*config.Schema[CacheSettings], error)
- func ConnectionSettingsConfigSchema() (*config.Schema[ConnectionSettings], error)
- func CredentialKey(name credentials.Name) foundation.Key[credentials.Provider]
- func CredentialProvider(name credentials.Name) foundation.ProviderID
- func DatabaseKey(name database.ConnectionName) foundation.Key[*database.DB]
- func DatabaseProvider(name database.ConnectionName) foundation.ProviderID
- func DiskKey(name storage.DiskID) foundation.Key[*storage.Disk]
- func DiskProvider(name storage.DiskID) foundation.ProviderID
- func DiskSettingsConfigSchema() (*config.Schema[DiskSettings], error)
- func HTTPClientKey(name httpclient.Name) foundation.Key[*httpclient.Client]
- func HTTPClientProvider(name httpclient.Name) foundation.ProviderID
- func HTTPClientSettingsConfigSchema() (*config.Schema[HTTPClientSettings], error)
- func JobConnectionSettingsConfigSchema() (*config.Schema[JobConnectionSettings], error)
- func JobDispatcherKey(name jobs.ConnectionName) foundation.Key[*jobs.Dispatcher]
- func JobKey(name jobs.ConnectionName) foundation.Key[*jobs.Connection]
- func JobProvider(name jobs.ConnectionName) foundation.ProviderID
- func MailKey(name email.MailerName) foundation.Key[*email.Mailer]
- func MailProvider(name email.MailerName) foundation.ProviderID
- func MailerSettingsConfigSchema() (*config.Schema[MailerSettings], error)
- func RealtimeConnectionSettingsConfigSchema() (*config.Schema[RealtimeConnectionSettings], error)
- func RealtimeKey(name websocket.ConnectionName) foundation.Key[*websocket.BackendConnection]
- func RealtimeProvider(name websocket.ConnectionName) foundation.ProviderID
- func RedisConnectionSettingsConfigSchema() (*config.Schema[RedisConnectionSettings], error)
- func RedisKey(name redis.ConnectionName) foundation.Key[*redis.Client]
- func RedisProvider(name redis.ConnectionName) foundation.ProviderID
- func SettingsConfigSchema() (*config.Schema[Settings], error)
- type BrokerDriver
- type BrokerSettings
- type BrokerSettingsConfigBufferConfigKeySet
- type BrokerSettingsConfigConfigKeySet
- type BrokerSettingsConfigKeySet
- type BrokerSettingsConfigNamespaceConfigKeySet
- type Brokers
- type CacheDriver
- type CacheSettings
- type CacheSettingsConfigConfigKeySet
- type CacheSettingsConfigKeySet
- type CacheSettingsConfigNamespaceConfigKeySet
- type CacheSettingsCoordinationConfigKeySet
- type CacheSettingsFileConfigKeySet
- type CacheSettingsLeasesConfigKeySet
- type CacheSettingsLeasesNamespaceConfigKeySet
- type CacheSettingsMemoryConfigKeySet
- type CacheSettingsPostgresConfigKeySet
- type CacheSettingsRequireConfigKeySet
- type CacheStores
- type CachesSettings
- type CloudDiskSettings
- type ConnectionSettings
- type ConnectionSettingsConfigKeySet
- type ConnectionSettingsPrimaryConfigKeySet
- type ConnectionSettingsPrimaryPoolConfigKeySet
- type ConnectionSettingsReadConfigKeySet
- type ConnectionSettingsReadPoolConfigKeySet
- type CoordinationDriver
- type CoordinationSettings
- type CredentialSources
- type DatabaseConnections
- type DatabaseSettings
- type DiskDriver
- type DiskSettings
- type DiskSettingsCloudCompatibleConfigKeySet
- type DiskSettingsCloudConfigKeySet
- type DiskSettingsConfigConfigKeySet
- type DiskSettingsConfigKeySet
- type DiskSettingsLocalConfigKeySet
- type Disks
- type FileCacheSettings
- type HTTPClientSettings
- type HTTPClientSettingsConfigConfigKeySet
- type HTTPClientSettingsConfigDestinationConfigKeySet
- type HTTPClientSettingsConfigKeySet
- type HTTPClientSettingsConfigRetryConfigKeySet
- type HTTPClientSettingsConfigTLSConfigKeySet
- type HTTPClients
- type HTTPClientsSettings
- type JobConnectionSettings
- type JobConnectionSettingsConfigKeySet
- type JobConnectionSettingsDispatchConfigKeySet
- type JobConnectionSettingsDispatchNamespaceConfigKeySet
- type JobConnectionSettingsQueueConfigKeySet
- type JobConnections
- type JobDriver
- type JobsSettings
- type LocalDiskSettings
- type MailAPISettings
- type MailDriver
- type MailSettings
- type MailerSettings
- type MailerSettingsAPIConfigKeySet
- type MailerSettingsConfigConfigKeySet
- type MailerSettingsConfigKeySet
- type MailerSettingsSMTPConfigKeySet
- type Mailers
- type MigrationGroup
- type MigrationTarget
- type Option
- func WithClock(source clock.Clock) Option
- func WithCredentials(name credentials.Name, provider credentials.Provider) Option
- func WithDatabaseEncryption(keys *encryption.Keyring) Option
- func WithLogger(logger *slog.Logger) Option
- func WithMailDriver(name MailDriver, driver email.Driver) Option
- func WithQueryObserver(observer database.QueryObserver) Option
- func WithRedisStores(stores ...RedisStore) Option
- func WithStatementDetector(detector *database.StatementDetector) Option
- type Plan
- func (Plan) Format(s fmt.State, _ rune)
- func (Plan) LogValue() slog.Value
- func (p *Plan) Migrations() []MigrationTarget
- func (p *Plan) Providers() []foundation.Provider
- func (p *Plan) RedisKeys() []RedisConnectionInventory
- func (p *Plan) Register(builder *foundation.Builder) *foundation.Builder
- func (p *Plan) Worker(owner foundation.ProviderID, name jobs.ConnectionName, ...) (foundation.Module, error)
- type PostgreSQLSettings
- type PostgresCacheSettings
- type PubSubSettings
- type RealtimeConnectionSettings
- type RealtimeConnectionSettingsClusterBufferConfigKeySet
- type RealtimeConnectionSettingsClusterConfigKeySet
- type RealtimeConnectionSettingsClusterNamespaceConfigKeySet
- type RealtimeConnectionSettingsConfigKeySet
- type RealtimeConnections
- type RealtimeDriver
- type RealtimeSettings
- type RedisConnectionInventory
- type RedisConnectionSettings
- type RedisConnectionSettingsConfigKeySet
- type RedisConnections
- type RedisKeySpace
- type RedisSettings
- type RedisStore
- type SMTPSettings
- type Services
- func (s *Services) Broker() (*pubsub.Broker, error)
- func (s *Services) Cache() (*cache.Store, error)
- func (s *Services) Database() (*database.DB, error)
- func (s *Services) Disk() (*storage.Disk, error)
- func (s *Services) HTTPClient() (*httpclient.Client, error)
- func (s *Services) JobConnection() (*jobs.Connection, error)
- func (s *Services) Leases() (*lease.Manager, error)
- func (s *Services) Mailer() (*email.Mailer, error)
- func (s *Services) RealtimeConnection() (*websocket.BackendConnection, error)
- func (s *Services) RedisConnection() (*redis.Client, error)
- type Settings
- type SettingsCacheConfigKeySet
- type SettingsConfigKeySet
- type SettingsCoordinationConfigConfigKeySet
- type SettingsCoordinationConfigKeySet
- type SettingsCoordinationConfigNamespaceConfigKeySet
- type SettingsDatabaseConfigKeySet
- type SettingsHTTPClientsConfigKeySet
- type SettingsJobsConfigKeySet
- type SettingsMailConfigKeySet
- type SettingsNamespaceConfigKeySet
- type SettingsPubSubConfigKeySet
- type SettingsRealtimeConfigKeySet
- type SettingsRedisConfigKeySet
- type SettingsStorageConfigKeySet
- type StorageSettings
Constants ¶
const CoordinationProvider foundation.ProviderID = "foundry.infrastructure.coordination"
const Provider foundation.ProviderID = "foundry.infrastructure"
Variables ¶
var CoordinationKey = foundation.NewKey[*lease.Manager](string(CoordinationProvider))
var ServicesKey = foundation.NewKey[*Services](string(Provider))
Functions ¶
func BrokerKey ¶
func BrokerKey(name pubsub.ConnectionName) foundation.Key[*pubsub.Broker]
BrokerKey returns the typed service key for a named pub/sub broker.
func BrokerProvider ¶
func BrokerProvider(name pubsub.ConnectionName) foundation.ProviderID
BrokerProvider returns the provider identifier for a named pub/sub broker.
func BrokerSettingsConfigSchema ¶
func BrokerSettingsConfigSchema() (*config.Schema[BrokerSettings], error)
BrokerSettingsConfigSchema reuses the shared file/environment/override loader.
func CacheProvider ¶
func CacheProvider(name cache.StoreName) foundation.ProviderID
CacheProvider returns the provider identifier for a named cache store.
func CacheSettingsConfigSchema ¶
func CacheSettingsConfigSchema() (*config.Schema[CacheSettings], error)
CacheSettingsConfigSchema reuses the shared file/environment/override loader.
func ConnectionSettingsConfigSchema ¶
func ConnectionSettingsConfigSchema() (*config.Schema[ConnectionSettings], error)
ConnectionSettingsConfigSchema reuses the shared file/environment/override loader.
func CredentialKey ¶
func CredentialKey(name credentials.Name) foundation.Key[credentials.Provider]
CredentialKey returns the typed service key for a named credential provider.
func CredentialProvider ¶
func CredentialProvider(name credentials.Name) foundation.ProviderID
CredentialProvider returns the provider identifier for named credentials.
func DatabaseKey ¶
func DatabaseKey(name database.ConnectionName) foundation.Key[*database.DB]
DatabaseKey returns the typed service key for a named database connection.
func DatabaseProvider ¶
func DatabaseProvider(name database.ConnectionName) foundation.ProviderID
DatabaseProvider returns the provider identifier for a named database connection.
func DiskProvider ¶
func DiskProvider(name storage.DiskID) foundation.ProviderID
DiskProvider returns the provider identifier for a named storage disk.
func DiskSettingsConfigSchema ¶
func DiskSettingsConfigSchema() (*config.Schema[DiskSettings], error)
DiskSettingsConfigSchema reuses the shared file/environment/override loader.
func HTTPClientKey ¶
func HTTPClientKey(name httpclient.Name) foundation.Key[*httpclient.Client]
HTTPClientKey returns the typed service key for a named HTTP client.
func HTTPClientProvider ¶
func HTTPClientProvider(name httpclient.Name) foundation.ProviderID
HTTPClientProvider returns the provider identifier for a named HTTP client.
func HTTPClientSettingsConfigSchema ¶
func HTTPClientSettingsConfigSchema() (*config.Schema[HTTPClientSettings], error)
HTTPClientSettingsConfigSchema reuses the shared file/environment/override loader.
func JobConnectionSettingsConfigSchema ¶
func JobConnectionSettingsConfigSchema() (*config.Schema[JobConnectionSettings], error)
JobConnectionSettingsConfigSchema reuses the shared file/environment/override loader.
func JobDispatcherKey ¶
func JobDispatcherKey(name jobs.ConnectionName) foundation.Key[*jobs.Dispatcher]
JobDispatcherKey returns the typed dispatcher key for a named job connection.
func JobKey ¶
func JobKey(name jobs.ConnectionName) foundation.Key[*jobs.Connection]
JobKey returns the typed service key for a named job connection.
func JobProvider ¶
func JobProvider(name jobs.ConnectionName) foundation.ProviderID
JobProvider returns the provider identifier for a named job connection.
func MailKey ¶
func MailKey(name email.MailerName) foundation.Key[*email.Mailer]
MailKey returns the typed service key for a named mailer.
func MailProvider ¶
func MailProvider(name email.MailerName) foundation.ProviderID
MailProvider returns the provider identifier for a named mailer.
func MailerSettingsConfigSchema ¶
func MailerSettingsConfigSchema() (*config.Schema[MailerSettings], error)
MailerSettingsConfigSchema reuses the shared file/environment/override loader.
func RealtimeConnectionSettingsConfigSchema ¶
func RealtimeConnectionSettingsConfigSchema() (*config.Schema[RealtimeConnectionSettings], error)
RealtimeConnectionSettingsConfigSchema reuses the shared file/environment/override loader.
func RealtimeKey ¶
func RealtimeKey(name websocket.ConnectionName) foundation.Key[*websocket.BackendConnection]
RealtimeKey returns the typed service key for a named realtime connection.
func RealtimeProvider ¶
func RealtimeProvider(name websocket.ConnectionName) foundation.ProviderID
RealtimeProvider returns the provider identifier for a named realtime connection.
func RedisConnectionSettingsConfigSchema ¶
func RedisConnectionSettingsConfigSchema() (*config.Schema[RedisConnectionSettings], error)
RedisConnectionSettingsConfigSchema reuses the shared file/environment/override loader.
func RedisKey ¶
func RedisKey(name redis.ConnectionName) foundation.Key[*redis.Client]
RedisKey returns the typed service key for a named Redis connection.
func RedisProvider ¶
func RedisProvider(name redis.ConnectionName) foundation.ProviderID
RedisProvider returns the provider identifier for a named Redis connection.
Types ¶
type BrokerDriver ¶
type BrokerDriver string
BrokerDriver selects a pub/sub broker implementation.
const ( MemoryBroker BrokerDriver = "memory" RedisBroker BrokerDriver = "redis" )
type BrokerSettings ¶
type BrokerSettings struct {
Driver BrokerDriver
Redis redis.ConnectionName
Config pubsub.Config
}
BrokerSettings configures a broker driver, optional Redis connection, and pub/sub behavior.
func DefaultBrokerSettings ¶
func DefaultBrokerSettings() BrokerSettings
DefaultBrokerSettings returns default settings for an in-memory broker.
type BrokerSettingsConfigBufferConfigKeySet ¶
type BrokerSettingsConfigBufferConfigKeySet struct {
// Messages selects config.buffer.messages. Set accepts int.
Messages config.Key[BrokerSettings, int]
// Bytes selects config.buffer.bytes. Set accepts int.
Bytes config.Key[BrokerSettings, int]
// PayloadBytes selects config.buffer.payload_bytes. Set accepts int.
PayloadBytes config.Key[BrokerSettings, int]
// Channels selects config.buffer.channels. Set accepts int.
Channels config.Key[BrokerSettings, int]
}
BrokerSettingsConfigBufferConfigKeySet exposes compiler-checked configuration overrides.
type BrokerSettingsConfigConfigKeySet ¶
type BrokerSettingsConfigConfigKeySet struct {
Namespace BrokerSettingsConfigNamespaceConfigKeySet
// MaxDeclarations selects config.max_declarations. Set accepts int.
MaxDeclarations config.Key[BrokerSettings, int]
// MaxKeyBytes selects config.max_key_bytes. Set accepts int.
MaxKeyBytes config.Key[BrokerSettings, int]
// MaxConcurrent selects config.max_concurrent. Set accepts int.
MaxConcurrent config.Key[BrokerSettings, int]
// MaxSubscriptions selects config.max_subscriptions. Set accepts int.
MaxSubscriptions config.Key[BrokerSettings, int]
// Timeout selects config.timeout. Set accepts time.Duration.
Timeout config.Key[BrokerSettings, time.Duration]
Buffer BrokerSettingsConfigBufferConfigKeySet
}
BrokerSettingsConfigConfigKeySet exposes compiler-checked configuration overrides.
type BrokerSettingsConfigKeySet ¶
type BrokerSettingsConfigKeySet struct {
// Driver selects driver. Set accepts BrokerDriver.
Driver config.Key[BrokerSettings, BrokerDriver]
// Redis selects redis. Set accepts redis.ConnectionName.
Redis config.Key[BrokerSettings, redis.ConnectionName]
Config BrokerSettingsConfigConfigKeySet
}
BrokerSettingsConfigKeySet exposes compiler-checked configuration overrides.
func BrokerSettingsConfigKeys ¶
func BrokerSettingsConfigKeys() BrokerSettingsConfigKeySet
BrokerSettingsConfigKeys derives keys from the handwritten settings declaration.
type BrokerSettingsConfigNamespaceConfigKeySet ¶
type BrokerSettingsConfigNamespaceConfigKeySet struct {
// Application selects config.namespace.application. Set accepts string.
Application config.Key[BrokerSettings, string]
// Environment selects config.namespace.environment. Set accepts string.
Environment config.Key[BrokerSettings, string]
}
BrokerSettingsConfigNamespaceConfigKeySet exposes compiler-checked configuration overrides.
type Brokers ¶
type Brokers map[pubsub.ConnectionName]BrokerSettings
Brokers maps pub/sub connection names to broker settings.
func (*Brokers) UnmarshalText ¶
UnmarshalText decodes broker settings, replacing the receiver only on success.
type CacheDriver ¶
type CacheDriver string
CacheDriver selects a cache implementation.
const ( MemoryCache CacheDriver = "memory" RedisCache CacheDriver = "redis" FileCache CacheDriver = "file" PostgresCache CacheDriver = "postgres" // NullCache retains nothing: reads miss and Remember always loads. It // supports every capability requirement except distributed fills. NullCache CacheDriver = "null" )
type CacheSettings ¶
type CacheSettings struct {
Driver CacheDriver
Config cache.Config
Memory memory.Config
File FileCacheSettings
Postgres PostgresCacheSettings
Redis redis.ConnectionName
Database database.ConnectionName
Require cache.Requirements
Leases lease.Config
Coordination cache.CoordinationConfig
}
CacheSettings chooses an adapter while domain declarations keep their types. An omitted Redis/Database reference selects that family's configured default.
func DefaultCacheSettings ¶
func DefaultCacheSettings() CacheSettings
DefaultCacheSettings returns default cache driver, backend, lease, and coordination settings.
type CacheSettingsConfigConfigKeySet ¶
type CacheSettingsConfigConfigKeySet struct {
Namespace CacheSettingsConfigNamespaceConfigKeySet
// MaxKeyBytes selects config.max_key_bytes. Set accepts int.
MaxKeyBytes config.Key[CacheSettings, int]
// MaxValueBytes selects config.max_value_bytes. Set accepts int.
MaxValueBytes config.Key[CacheSettings, int]
// MaxDeclarations selects config.max_declarations. Set accepts int.
MaxDeclarations config.Key[CacheSettings, int]
// MaxBatchEntries selects config.max_batch_entries. Set accepts int.
//
// Maximum batch input keys before deduplication; bounded by MaxBatchEntries.
//
MaxBatchEntries config.Key[CacheSettings, int]
// MaxTags selects config.max_tags. Set accepts int.
//
// Maximum references in a tagged view/invalidation; bounded by cache.MaxTags.
//
MaxTags config.Key[CacheSettings, int]
// MaxFills selects config.max_fills. Set accepts int.
//
// MaxFills bounds concurrent Remember loaders across this store.
//
MaxFills config.Key[CacheSettings, int]
// MaxFillWaiters selects config.max_fill_waiters. Set accepts int.
//
// MaxFillWaiters bounds followers of each Remember loader (excluding its owner).
//
MaxFillWaiters config.Key[CacheSettings, int]
// Timeout selects config.timeout. Set accepts time.Duration.
//
// Timeout bounds each backend step (read, write, metadata) and every other
// operation. It does not cap Remember loaders; LoadTimeout does.
//
Timeout config.Key[CacheSettings, time.Duration]
// LoadTimeout selects config.load_timeout. Set accepts time.Duration.
//
// LoadTimeout bounds one Remember loader run, detached from the requesting
// caller's cancellation. A call can narrow it with WithLoadTimeout.
//
LoadTimeout config.Key[CacheSettings, time.Duration]
}
CacheSettingsConfigConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsConfigKeySet ¶
type CacheSettingsConfigKeySet struct {
// Driver selects driver. Set accepts CacheDriver.
Driver config.Key[CacheSettings, CacheDriver]
Config CacheSettingsConfigConfigKeySet
Memory CacheSettingsMemoryConfigKeySet
File CacheSettingsFileConfigKeySet
Postgres CacheSettingsPostgresConfigKeySet
// Redis selects redis. Set accepts redis.ConnectionName.
Redis config.Key[CacheSettings, redis.ConnectionName]
// Database selects database. Set accepts database.ConnectionName.
Database config.Key[CacheSettings, database.ConnectionName]
Require CacheSettingsRequireConfigKeySet
Leases CacheSettingsLeasesConfigKeySet
Coordination CacheSettingsCoordinationConfigKeySet
}
CacheSettingsConfigKeySet exposes compiler-checked configuration overrides.
func CacheSettingsConfigKeys ¶
func CacheSettingsConfigKeys() CacheSettingsConfigKeySet
CacheSettingsConfigKeys derives keys from the handwritten settings declaration.
type CacheSettingsConfigNamespaceConfigKeySet ¶
type CacheSettingsConfigNamespaceConfigKeySet struct {
// Application selects config.namespace.application. Set accepts string.
Application config.Key[CacheSettings, string]
// Environment selects config.namespace.environment. Set accepts string.
Environment config.Key[CacheSettings, string]
}
CacheSettingsConfigNamespaceConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsCoordinationConfigKeySet ¶
type CacheSettingsCoordinationConfigKeySet struct {
// LeaseDuration selects coordination.lease_duration. Set accepts time.Duration.
LeaseDuration config.Key[CacheSettings, time.Duration]
// Wait selects coordination.wait. Set accepts time.Duration.
Wait config.Key[CacheSettings, time.Duration]
}
CacheSettingsCoordinationConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsFileConfigKeySet ¶
type CacheSettingsFileConfigKeySet struct {
// Root selects file.root. Set accepts string.
Root config.Key[CacheSettings, string]
// MaxEntries selects file.max_entries. Set accepts int.
MaxEntries config.Key[CacheSettings, int]
// MaxBytes selects file.max_bytes. Set accepts int64.
MaxBytes config.Key[CacheSettings, int64]
// Sync selects file.sync. Set accepts bool.
Sync config.Key[CacheSettings, bool]
// PruneInterval selects file.prune_interval. Set accepts time.Duration.
PruneInterval config.Key[CacheSettings, time.Duration]
}
CacheSettingsFileConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsLeasesConfigKeySet ¶
type CacheSettingsLeasesConfigKeySet struct {
Namespace CacheSettingsLeasesNamespaceConfigKeySet
// MaxActive selects leases.max_active. Set accepts int.
MaxActive config.Key[CacheSettings, int]
// MaxDeclarations selects leases.max_declarations. Set accepts int.
MaxDeclarations config.Key[CacheSettings, int]
// MaxKeyBytes selects leases.max_key_bytes. Set accepts int.
MaxKeyBytes config.Key[CacheSettings, int]
// OperationTimeout selects leases.operation_timeout. Set accepts time.Duration.
OperationTimeout config.Key[CacheSettings, time.Duration]
// MaxWait selects leases.max_wait. Set accepts time.Duration.
MaxWait config.Key[CacheSettings, time.Duration]
// PollInterval selects leases.poll_interval. Set accepts time.Duration.
PollInterval config.Key[CacheSettings, time.Duration]
}
CacheSettingsLeasesConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsLeasesNamespaceConfigKeySet ¶
type CacheSettingsLeasesNamespaceConfigKeySet struct {
// Application selects leases.namespace.application. Set accepts string.
Application config.Key[CacheSettings, string]
// Environment selects leases.namespace.environment. Set accepts string.
Environment config.Key[CacheSettings, string]
}
CacheSettingsLeasesNamespaceConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsMemoryConfigKeySet ¶
type CacheSettingsMemoryConfigKeySet struct {
// MaxEntries selects memory.max_entries. Set accepts int.
MaxEntries config.Key[CacheSettings, int]
// MaxBytes selects memory.max_bytes. Set accepts int.
MaxBytes config.Key[CacheSettings, int]
}
CacheSettingsMemoryConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsPostgresConfigKeySet ¶
type CacheSettingsPostgresConfigKeySet struct {
// Schema selects postgres.schema. Set accepts string.
Schema config.Key[CacheSettings, string]
// MaxEntries selects postgres.max_entries. Set accepts int.
MaxEntries config.Key[CacheSettings, int]
// MaxBytes selects postgres.max_bytes. Set accepts int64.
MaxBytes config.Key[CacheSettings, int64]
// PruneInterval selects postgres.prune_interval. Set accepts time.Duration.
PruneInterval config.Key[CacheSettings, time.Duration]
}
CacheSettingsPostgresConfigKeySet exposes compiler-checked configuration overrides.
type CacheSettingsRequireConfigKeySet ¶
type CacheSettingsRequireConfigKeySet struct {
// Tags selects require.tags. Set accepts bool.
Tags config.Key[CacheSettings, bool]
// Counters selects require.counters. Set accepts bool.
Counters config.Key[CacheSettings, bool]
// Entries selects require.entries. Set accepts bool.
Entries config.Key[CacheSettings, bool]
// Batches selects require.batches. Set accepts bool.
Batches config.Key[CacheSettings, bool]
// DistributedFills selects require.distributed_fills. Set accepts bool.
DistributedFills config.Key[CacheSettings, bool]
}
CacheSettingsRequireConfigKeySet exposes compiler-checked configuration overrides.
type CacheStores ¶
type CacheStores map[cache.StoreName]CacheSettings
CacheStores maps cache store names to settings.
func (*CacheStores) UnmarshalText ¶
func (m *CacheStores) UnmarshalText(data []byte) error
UnmarshalText decodes cache store settings, replacing the receiver only on success.
type CachesSettings ¶
type CachesSettings struct {
Default cache.StoreName
Stores CacheStores
}
CachesSettings configures named cache stores and their default.
func DefaultCachesSettings ¶
func DefaultCachesSettings() CachesSettings
DefaultCachesSettings returns cache settings selecting the default store name.
type CloudDiskSettings ¶
type CloudDiskSettings struct {
Bucket, Region, Endpoint, Namespace, PublicBase string
Credentials credentials.Name
PathStyle bool
PartBytes int64
MaxUploads, ReadAttempts, PartAttempts int
AbortTimeout time.Duration
PartConcurrency int
VerifyPublication bool
// AllowHTTP and Compatible apply only to the s3_compatible driver.
AllowHTTP bool
Compatible s3.CompatibleCapabilities
}
CloudDiskSettings configures cloud storage location, credentials, transfer limits, and compatibility options.
type ConnectionSettings ¶
type ConnectionSettings struct {
Primary PostgreSQLSettings
ReadEnabled bool
Read PostgreSQLSettings
MaxConnections int
// SlowQueryThreshold logs statements at least this slow through the
// application logger, without SQL text or arguments; zero disables it.
SlowQueryThreshold time.Duration
// StickyReadWindow routes reads to the primary for this long after a write
// in a database.StickyReads request scope; zero disables it.
StickyReadWindow time.Duration
}
ConnectionSettings defines one logical primary/read topology.
func DefaultConnectionSettings ¶
func DefaultConnectionSettings() ConnectionSettings
DefaultConnectionSettings returns PostgreSQL routing defaults with matching primary and read settings.
func (ConnectionSettings) Config ¶
func (s ConnectionSettings) Config() postgres.RoutingConfig
Config builds routing configuration, including the read pool only when enabled.
func (ConnectionSettings) Validate ¶
func (s ConnectionSettings) Validate() error
Validate validates the derived PostgreSQL routing configuration.
type ConnectionSettingsConfigKeySet ¶
type ConnectionSettingsConfigKeySet struct {
Primary ConnectionSettingsPrimaryConfigKeySet
// ReadEnabled selects read_enabled. Set accepts bool.
ReadEnabled config.Key[ConnectionSettings, bool]
Read ConnectionSettingsReadConfigKeySet
// MaxConnections selects max_connections. Set accepts int.
MaxConnections config.Key[ConnectionSettings, int]
// SlowQueryThreshold selects slow_query_threshold. Set accepts time.Duration.
//
// SlowQueryThreshold logs statements at least this slow through the
// application logger, without SQL text or arguments; zero disables it.
//
SlowQueryThreshold config.Key[ConnectionSettings, time.Duration]
// StickyReadWindow selects sticky_read_window. Set accepts time.Duration.
//
// StickyReadWindow routes reads to the primary for this long after a write
// in a database.StickyReads request scope; zero disables it.
//
StickyReadWindow config.Key[ConnectionSettings, time.Duration]
}
ConnectionSettingsConfigKeySet exposes compiler-checked configuration overrides.
func ConnectionSettingsConfigKeys ¶
func ConnectionSettingsConfigKeys() ConnectionSettingsConfigKeySet
ConnectionSettingsConfigKeys derives keys from the handwritten settings declaration.
type ConnectionSettingsPrimaryConfigKeySet ¶
type ConnectionSettingsPrimaryConfigKeySet struct {
// Host selects primary.host. Set accepts string.
Host config.Key[ConnectionSettings, string]
// Port selects primary.port. Set accepts uint16.
Port config.Key[ConnectionSettings, uint16]
// Database selects primary.database. Set accepts string.
Database config.Key[ConnectionSettings, string]
// User selects primary.user. Set accepts string.
User config.Key[ConnectionSettings, string]
// Schema selects primary.schema. Set accepts string.
Schema config.Key[ConnectionSettings, string]
// Password selects primary.password. Set accepts secret.String.
Password config.Key[ConnectionSettings, secret.String]
// TLS selects primary.tls. Set accepts postgres.TLSMode.
TLS config.Key[ConnectionSettings, postgres.TLSMode]
// ApplicationName selects primary.application_name. Set accepts string.
ApplicationName config.Key[ConnectionSettings, string]
Pool ConnectionSettingsPrimaryPoolConfigKeySet
// StatementCacheCapacity selects primary.statement_cache_capacity. Set accepts int.
StatementCacheCapacity config.Key[ConnectionSettings, int]
// MaxProtocolMessageBytes selects primary.max_protocol_message_bytes. Set accepts int.
MaxProtocolMessageBytes config.Key[ConnectionSettings, int]
// StatementTimeout selects primary.statement_timeout. Set accepts time.Duration.
StatementTimeout config.Key[ConnectionSettings, time.Duration]
// LockTimeout selects primary.lock_timeout. Set accepts time.Duration.
LockTimeout config.Key[ConnectionSettings, time.Duration]
// IdleInTransactionSessionTimeout selects primary.idle_in_transaction_session_timeout. Set accepts time.Duration.
IdleInTransactionSessionTimeout config.Key[ConnectionSettings, time.Duration]
}
ConnectionSettingsPrimaryConfigKeySet exposes compiler-checked configuration overrides.
type ConnectionSettingsPrimaryPoolConfigKeySet ¶
type ConnectionSettingsPrimaryPoolConfigKeySet struct {
// MaxOpen selects primary.pool.max_open. Set accepts int.
MaxOpen config.Key[ConnectionSettings, int]
// MaxIdle selects primary.pool.max_idle. Set accepts int.
MaxIdle config.Key[ConnectionSettings, int]
// MaxLifetime selects primary.pool.max_lifetime. Set accepts time.Duration.
MaxLifetime config.Key[ConnectionSettings, time.Duration]
// MaxIdleTime selects primary.pool.max_idle_time. Set accepts time.Duration.
MaxIdleTime config.Key[ConnectionSettings, time.Duration]
// ConnectTimeout selects primary.pool.connect_timeout. Set accepts time.Duration.
ConnectTimeout config.Key[ConnectionSettings, time.Duration]
// AcquireTimeout selects primary.pool.acquire_timeout. Set accepts time.Duration.
AcquireTimeout config.Key[ConnectionSettings, time.Duration]
// CommitTimeout selects primary.pool.commit_timeout. Set accepts time.Duration.
CommitTimeout config.Key[ConnectionSettings, time.Duration]
// StartupTimeout selects primary.pool.startup_timeout. Set accepts time.Duration.
StartupTimeout config.Key[ConnectionSettings, time.Duration]
}
ConnectionSettingsPrimaryPoolConfigKeySet exposes compiler-checked configuration overrides.
type ConnectionSettingsReadConfigKeySet ¶
type ConnectionSettingsReadConfigKeySet struct {
// Host selects read.host. Set accepts string.
Host config.Key[ConnectionSettings, string]
// Port selects read.port. Set accepts uint16.
Port config.Key[ConnectionSettings, uint16]
// Database selects read.database. Set accepts string.
Database config.Key[ConnectionSettings, string]
// User selects read.user. Set accepts string.
User config.Key[ConnectionSettings, string]
// Schema selects read.schema. Set accepts string.
Schema config.Key[ConnectionSettings, string]
// Password selects read.password. Set accepts secret.String.
Password config.Key[ConnectionSettings, secret.String]
// TLS selects read.tls. Set accepts postgres.TLSMode.
TLS config.Key[ConnectionSettings, postgres.TLSMode]
// ApplicationName selects read.application_name. Set accepts string.
ApplicationName config.Key[ConnectionSettings, string]
Pool ConnectionSettingsReadPoolConfigKeySet
// StatementCacheCapacity selects read.statement_cache_capacity. Set accepts int.
StatementCacheCapacity config.Key[ConnectionSettings, int]
// MaxProtocolMessageBytes selects read.max_protocol_message_bytes. Set accepts int.
MaxProtocolMessageBytes config.Key[ConnectionSettings, int]
// StatementTimeout selects read.statement_timeout. Set accepts time.Duration.
StatementTimeout config.Key[ConnectionSettings, time.Duration]
// LockTimeout selects read.lock_timeout. Set accepts time.Duration.
LockTimeout config.Key[ConnectionSettings, time.Duration]
// IdleInTransactionSessionTimeout selects read.idle_in_transaction_session_timeout. Set accepts time.Duration.
IdleInTransactionSessionTimeout config.Key[ConnectionSettings, time.Duration]
}
ConnectionSettingsReadConfigKeySet exposes compiler-checked configuration overrides.
type ConnectionSettingsReadPoolConfigKeySet ¶
type ConnectionSettingsReadPoolConfigKeySet struct {
// MaxOpen selects read.pool.max_open. Set accepts int.
MaxOpen config.Key[ConnectionSettings, int]
// MaxIdle selects read.pool.max_idle. Set accepts int.
MaxIdle config.Key[ConnectionSettings, int]
// MaxLifetime selects read.pool.max_lifetime. Set accepts time.Duration.
MaxLifetime config.Key[ConnectionSettings, time.Duration]
// MaxIdleTime selects read.pool.max_idle_time. Set accepts time.Duration.
MaxIdleTime config.Key[ConnectionSettings, time.Duration]
// ConnectTimeout selects read.pool.connect_timeout. Set accepts time.Duration.
ConnectTimeout config.Key[ConnectionSettings, time.Duration]
// AcquireTimeout selects read.pool.acquire_timeout. Set accepts time.Duration.
AcquireTimeout config.Key[ConnectionSettings, time.Duration]
// CommitTimeout selects read.pool.commit_timeout. Set accepts time.Duration.
CommitTimeout config.Key[ConnectionSettings, time.Duration]
// StartupTimeout selects read.pool.startup_timeout. Set accepts time.Duration.
StartupTimeout config.Key[ConnectionSettings, time.Duration]
}
ConnectionSettingsReadPoolConfigKeySet exposes compiler-checked configuration overrides.
type CoordinationDriver ¶
type CoordinationDriver string
CoordinationDriver selects a coordination implementation.
const ( MemoryCoordination CoordinationDriver = "memory" RedisCoordination CoordinationDriver = "redis" )
type CoordinationSettings ¶
type CoordinationSettings struct {
Enabled bool
Driver CoordinationDriver
Redis redis.ConnectionName
Config lease.Config
MaxEntries int
}
CoordinationSettings configures coordination enablement, backend, leases, and capacity.
func DefaultCoordinationSettings ¶
func DefaultCoordinationSettings() CoordinationSettings
DefaultCoordinationSettings returns default settings for in-memory coordination.
type CredentialSources ¶
type CredentialSources map[credentials.Name]credentials.Settings
CredentialSources maps credential names to source settings.
func (*CredentialSources) UnmarshalText ¶
func (m *CredentialSources) UnmarshalText(data []byte) error
UnmarshalText decodes credential source settings, replacing the receiver only on success.
type DatabaseConnections ¶
type DatabaseConnections map[database.ConnectionName]ConnectionSettings
DatabaseConnections uses generated element keys, including nested durations and secrets. Each input entry starts with DefaultConnectionSettings.
func (*DatabaseConnections) UnmarshalText ¶
func (m *DatabaseConnections) UnmarshalText(data []byte) error
UnmarshalText decodes database connection settings, replacing the receiver only on success.
type DatabaseSettings ¶
type DatabaseSettings struct {
Default database.ConnectionName
MaxConnections int
Connections DatabaseConnections `config:",secret"`
}
DatabaseSettings configures named database connections, their default, and the total connection budget.
func DefaultDatabaseSettings ¶
func DefaultDatabaseSettings() DatabaseSettings
DefaultDatabaseSettings returns database settings with the default name and a 128-connection budget.
func (DatabaseSettings) MigrationGroups ¶
func (s DatabaseSettings) MigrationGroups(targets ...MigrationTarget) ([]MigrationGroup, error)
MigrationGroups resolves every target before any database I/O. A blank connection selects the default alias and a blank schema selects the connection's primary schema, or public for an unscoped connection. Targets addressing the same primary host, port, database and schema share one history table, so they merge into one group: an identical repeated definition collapses and a conflicting one fails. Each group must form a valid migrate registry. Targets without definitions contribute nothing. Groups are ordered by first connection name, then schema; definitions keep their first-seen order and are owned copies.
func (DatabaseSettings) ScopedSchema ¶
func (s DatabaseSettings) ScopedSchema(name database.ConnectionName) (database.ConnectionName, string, error)
ScopedSchema resolves the default alias and rejects an unscoped endpoint.
type DiskDriver ¶
type DiskDriver string
DiskDriver selects a storage disk implementation.
const ( LocalDisk DiskDriver = "local" S3Disk DiskDriver = "s3" R2Disk DiskDriver = "r2" // CompatibleDisk is a generic S3-compatible endpoint whose guarantees are // declared in CloudDiskSettings.Compatible. CompatibleDisk DiskDriver = "s3_compatible" )
type DiskSettings ¶
type DiskSettings struct {
Driver DiskDriver
Config storage.Config
Local LocalDiskSettings
Cloud CloudDiskSettings
}
DiskSettings owns one driver selection and the common storage limits.
func DefaultDiskSettings ¶
func DefaultDiskSettings() DiskSettings
DefaultDiskSettings returns local disk defaults and cloud transfer defaults.
type DiskSettingsCloudCompatibleConfigKeySet ¶
type DiskSettingsCloudCompatibleConfigKeySet struct {
// ConditionalCreate selects cloud.compatible.conditional_create. Set accepts bool.
ConditionalCreate config.Key[DiskSettings, bool]
// ConditionalReplace selects cloud.compatible.conditional_replace. Set accepts bool.
ConditionalReplace config.Key[DiskSettings, bool]
// ConditionalDelete selects cloud.compatible.conditional_delete. Set accepts bool.
ConditionalDelete config.Key[DiskSettings, bool]
// Versions selects cloud.compatible.versions. Set accepts bool.
Versions config.Key[DiskSettings, bool]
// SingleRequestConditions selects cloud.compatible.single_request_conditions. Set accepts bool.
SingleRequestConditions config.Key[DiskSettings, bool]
// RequiresNFCKeys selects cloud.compatible.requires_nfc_keys. Set accepts bool.
RequiresNFCKeys config.Key[DiskSettings, bool]
// ServerCopy selects cloud.compatible.server_copy. Set accepts bool.
ServerCopy config.Key[DiskSettings, bool]
// ListingPathEncoding selects cloud.compatible.listing_path_encoding. Set accepts bool.
ListingPathEncoding config.Key[DiskSettings, bool]
// FormUploads selects cloud.compatible.form_uploads. Set accepts bool.
FormUploads config.Key[DiskSettings, bool]
}
DiskSettingsCloudCompatibleConfigKeySet exposes compiler-checked configuration overrides.
type DiskSettingsCloudConfigKeySet ¶
type DiskSettingsCloudConfigKeySet struct {
// Bucket selects cloud.bucket. Set accepts string.
Bucket config.Key[DiskSettings, string]
// Region selects cloud.region. Set accepts string.
Region config.Key[DiskSettings, string]
// Endpoint selects cloud.endpoint. Set accepts string.
Endpoint config.Key[DiskSettings, string]
// Namespace selects cloud.namespace. Set accepts string.
Namespace config.Key[DiskSettings, string]
// PublicBase selects cloud.public_base. Set accepts string.
PublicBase config.Key[DiskSettings, string]
// Credentials selects cloud.credentials. Set accepts credentials.Name.
Credentials config.Key[DiskSettings, credentials.Name]
// PathStyle selects cloud.path_style. Set accepts bool.
PathStyle config.Key[DiskSettings, bool]
// PartBytes selects cloud.part_bytes. Set accepts int64.
PartBytes config.Key[DiskSettings, int64]
// MaxUploads selects cloud.max_uploads. Set accepts int.
MaxUploads config.Key[DiskSettings, int]
// ReadAttempts selects cloud.read_attempts. Set accepts int.
ReadAttempts config.Key[DiskSettings, int]
// PartAttempts selects cloud.part_attempts. Set accepts int.
PartAttempts config.Key[DiskSettings, int]
// AbortTimeout selects cloud.abort_timeout. Set accepts time.Duration.
AbortTimeout config.Key[DiskSettings, time.Duration]
// PartConcurrency selects cloud.part_concurrency. Set accepts int.
PartConcurrency config.Key[DiskSettings, int]
// VerifyPublication selects cloud.verify_publication. Set accepts bool.
VerifyPublication config.Key[DiskSettings, bool]
// AllowHTTP selects cloud.allow_http. Set accepts bool.
//
// AllowHTTP and Compatible apply only to the s3_compatible driver.
//
AllowHTTP config.Key[DiskSettings, bool]
Compatible DiskSettingsCloudCompatibleConfigKeySet
}
DiskSettingsCloudConfigKeySet exposes compiler-checked configuration overrides.
type DiskSettingsConfigConfigKeySet ¶
type DiskSettingsConfigConfigKeySet struct {
// Visibility selects config.visibility. Set accepts storage.Visibility.
Visibility config.Key[DiskSettings, storage.Visibility]
// MaxObjectBytes selects config.max_object_bytes. Set accepts int64.
MaxObjectBytes config.Key[DiskSettings, int64]
// MaxActive selects config.max_active. Set accepts int.
MaxActive config.Key[DiskSettings, int]
// Timeout selects config.timeout. Set accepts time.Duration.
Timeout config.Key[DiskSettings, time.Duration]
// MaxStreams selects config.max_streams. Set accepts int.
MaxStreams config.Key[DiskSettings, int]
// StreamIdleTimeout selects config.stream_idle_timeout. Set accepts time.Duration.
StreamIdleTimeout config.Key[DiskSettings, time.Duration]
}
DiskSettingsConfigConfigKeySet exposes compiler-checked configuration overrides.
type DiskSettingsConfigKeySet ¶
type DiskSettingsConfigKeySet struct {
// Driver selects driver. Set accepts DiskDriver.
Driver config.Key[DiskSettings, DiskDriver]
Config DiskSettingsConfigConfigKeySet
Local DiskSettingsLocalConfigKeySet
Cloud DiskSettingsCloudConfigKeySet
}
DiskSettingsConfigKeySet exposes compiler-checked configuration overrides.
func DiskSettingsConfigKeys ¶
func DiskSettingsConfigKeys() DiskSettingsConfigKeySet
DiskSettingsConfigKeys derives keys from the handwritten settings declaration.
type DiskSettingsLocalConfigKeySet ¶
type DiskSettingsLocalConfigKeySet struct {
// Root selects local.root. Set accepts string.
Root config.Key[DiskSettings, string]
// MaxScan selects local.max_scan. Set accepts int.
MaxScan config.Key[DiskSettings, int]
// Sync selects local.sync. Set accepts bool.
Sync config.Key[DiskSettings, bool]
}
DiskSettingsLocalConfigKeySet exposes compiler-checked configuration overrides.
type Disks ¶
type Disks map[storage.DiskID]DiskSettings
Disks maps disk identifiers to settings.
func (*Disks) UnmarshalText ¶
UnmarshalText decodes disk settings, replacing the receiver only on success.
type FileCacheSettings ¶
type FileCacheSettings struct {
Root string
MaxEntries int
MaxBytes int64
Sync bool
PruneInterval time.Duration
}
FileCacheSettings configures the file adapter. PruneInterval runs automatic reclamation of expired records while the application is started (default one minute); zero disables it.
type HTTPClientSettings ¶
type HTTPClientSettings struct{ Config httpclient.Config }
HTTPClientSettings contains configuration for a named HTTP client.
func DefaultHTTPClientSettings ¶
func DefaultHTTPClientSettings(name httpclient.Name) HTTPClientSettings
DefaultHTTPClientSettings returns default HTTP client settings for the supplied name.
type HTTPClientSettingsConfigConfigKeySet ¶
type HTTPClientSettingsConfigConfigKeySet struct {
//
// Destination optionally enforces direct, address-checked outbound networking.
//
Destination HTTPClientSettingsConfigDestinationConfigKeySet
// Name selects config.name. Set accepts httpclient.Name.
Name config.Key[HTTPClientSettings, httpclient.Name]
// BaseURL selects config.base_url. Set accepts string.
BaseURL config.Key[HTTPClientSettings, string]
// Headers selects config.headers. Set accepts http.Header.
Headers config.Key[HTTPClientSettings, http.Header]
// ConnectTimeout selects config.connect_timeout. Set accepts time.Duration.
ConnectTimeout config.Key[HTTPClientSettings, time.Duration]
// AttemptTimeout selects config.attempt_timeout. Set accepts time.Duration.
AttemptTimeout config.Key[HTTPClientSettings, time.Duration]
// Timeout selects config.timeout. Set accepts time.Duration.
Timeout config.Key[HTTPClientSettings, time.Duration]
// Concurrency selects config.concurrency. Set accepts int.
Concurrency config.Key[HTTPClientSettings, int]
// RequestBytes selects config.request_bytes. Set accepts int64.
RequestBytes config.Key[HTTPClientSettings, int64]
// ResponseBytes selects config.response_bytes. Set accepts int64.
ResponseBytes config.Key[HTTPClientSettings, int64]
// HeaderBytes selects config.header_bytes. Set accepts int.
HeaderBytes config.Key[HTTPClientSettings, int]
Retry HTTPClientSettingsConfigRetryConfigKeySet
// PropagateTrace selects config.propagate_trace. Set accepts bool.
//
// PropagateTrace opts this named destination into bounded W3C correlation.
// When enabled, framework context replaces manual trace headers on the
// owned request copy. Disabled clients do not add propagation headers.
//
PropagateTrace config.Key[HTTPClientSettings, bool]
//
// TLS customizes certificate verification and client certificates for the
// owned transport. A supplied custom transport cannot combine with it.
//
TLS HTTPClientSettingsConfigTLSConfigKeySet
}
HTTPClientSettingsConfigConfigKeySet exposes compiler-checked configuration overrides.
type HTTPClientSettingsConfigDestinationConfigKeySet ¶
type HTTPClientSettingsConfigDestinationConfigKeySet struct {
// Mode selects config.destination.mode. Set accepts httpclient.DestinationMode.
Mode config.Key[HTTPClientSettings, httpclient.DestinationMode]
// Schemes selects config.destination.schemes. Set accepts []httpclient.Scheme.
Schemes config.Key[HTTPClientSettings, []httpclient.Scheme]
// Ports selects config.destination.ports. Set accepts []uint16.
Ports config.Key[HTTPClientSettings, []uint16]
// Hosts selects config.destination.hosts. Set accepts []string.
Hosts config.Key[HTTPClientSettings, []string]
// Networks selects config.destination.networks. Set accepts []netip.Prefix.
Networks config.Key[HTTPClientSettings, []netip.Prefix]
}
HTTPClientSettingsConfigDestinationConfigKeySet exposes compiler-checked configuration overrides.
type HTTPClientSettingsConfigKeySet ¶
type HTTPClientSettingsConfigKeySet struct {
Config HTTPClientSettingsConfigConfigKeySet
}
HTTPClientSettingsConfigKeySet exposes compiler-checked configuration overrides.
func HTTPClientSettingsConfigKeys ¶
func HTTPClientSettingsConfigKeys() HTTPClientSettingsConfigKeySet
HTTPClientSettingsConfigKeys derives keys from the handwritten settings declaration.
type HTTPClientSettingsConfigRetryConfigKeySet ¶
type HTTPClientSettingsConfigRetryConfigKeySet struct {
// Mode selects config.retry.mode. Set accepts httpclient.RetryMode.
Mode config.Key[HTTPClientSettings, httpclient.RetryMode]
// Attempts selects config.retry.attempts. Set accepts int.
Attempts config.Key[HTTPClientSettings, int]
// InitialBackoff selects config.retry.initial_backoff. Set accepts time.Duration.
InitialBackoff config.Key[HTTPClientSettings, time.Duration]
// MaxBackoff selects config.retry.max_backoff. Set accepts time.Duration.
MaxBackoff config.Key[HTTPClientSettings, time.Duration]
// Jitter selects config.retry.jitter. Set accepts bool.
Jitter config.Key[HTTPClientSettings, bool]
// Statuses selects config.retry.statuses. Set accepts []int.
Statuses config.Key[HTTPClientSettings, []int]
}
HTTPClientSettingsConfigRetryConfigKeySet exposes compiler-checked configuration overrides.
type HTTPClientSettingsConfigTLSConfigKeySet ¶
type HTTPClientSettingsConfigTLSConfigKeySet struct {
// CertificateAuthorities selects config.tls.certificate_authorities. Set accepts string.
CertificateAuthorities config.Key[HTTPClientSettings, string]
// AppendSystemRoots selects config.tls.append_system_roots. Set accepts bool.
AppendSystemRoots config.Key[HTTPClientSettings, bool]
// Certificate selects config.tls.certificate. Set accepts secret.String.
Certificate config.Key[HTTPClientSettings, secret.String]
// PrivateKey selects config.tls.private_key. Set accepts secret.String.
PrivateKey config.Key[HTTPClientSettings, secret.String]
// ServerName selects config.tls.server_name. Set accepts string.
ServerName config.Key[HTTPClientSettings, string]
}
HTTPClientSettingsConfigTLSConfigKeySet exposes compiler-checked configuration overrides.
type HTTPClients ¶
type HTTPClients map[httpclient.Name]HTTPClientSettings
HTTPClients maps HTTP client names to settings.
func (*HTTPClients) UnmarshalText ¶
func (m *HTTPClients) UnmarshalText(data []byte) error
UnmarshalText decodes HTTP client settings, replacing the receiver only on success.
type HTTPClientsSettings ¶
type HTTPClientsSettings struct {
Default httpclient.Name
Clients HTTPClients `config:",secret"`
}
HTTPClientsSettings configures named HTTP clients and their default.
func DefaultHTTPClientsSettings ¶
func DefaultHTTPClientsSettings() HTTPClientsSettings
DefaultHTTPClientsSettings returns HTTP client settings selecting the default client name.
type JobConnectionSettings ¶
type JobConnectionSettings struct {
Driver JobDriver
Redis redis.ConnectionName
AllowMemory bool
DefaultQueue jobs.Queue
Dispatch jobs.DispatchConfig
Queue jobs.QueueConfig
}
JobConnectionSettings configures one named job connection. The memory driver is process-local: a job dispatched by a process that runs no worker kernel (for example an HTTP replica) is never executed and is lost when that process exits. Outside local, development and test environments it therefore requires AllowMemory; production deployments should use the redis driver.
func DefaultJobConnectionSettings ¶
func DefaultJobConnectionSettings() JobConnectionSettings
DefaultJobConnectionSettings returns default settings for an in-memory job connection and default queue.
type JobConnectionSettingsConfigKeySet ¶
type JobConnectionSettingsConfigKeySet struct {
// Driver selects driver. Set accepts JobDriver.
Driver config.Key[JobConnectionSettings, JobDriver]
// Redis selects redis. Set accepts redis.ConnectionName.
Redis config.Key[JobConnectionSettings, redis.ConnectionName]
// AllowMemory selects allow_memory. Set accepts bool.
AllowMemory config.Key[JobConnectionSettings, bool]
// DefaultQueue selects default_queue. Set accepts jobs.Queue.
DefaultQueue config.Key[JobConnectionSettings, jobs.Queue]
Dispatch JobConnectionSettingsDispatchConfigKeySet
Queue JobConnectionSettingsQueueConfigKeySet
}
JobConnectionSettingsConfigKeySet exposes compiler-checked configuration overrides.
func JobConnectionSettingsConfigKeys ¶
func JobConnectionSettingsConfigKeys() JobConnectionSettingsConfigKeySet
JobConnectionSettingsConfigKeys derives keys from the handwritten settings declaration.
type JobConnectionSettingsDispatchConfigKeySet ¶
type JobConnectionSettingsDispatchConfigKeySet struct {
Namespace JobConnectionSettingsDispatchNamespaceConfigKeySet
// MaxInFlight selects dispatch.max_in_flight. Set accepts int.
MaxInFlight config.Key[JobConnectionSettings, int]
}
JobConnectionSettingsDispatchConfigKeySet exposes compiler-checked configuration overrides.
type JobConnectionSettingsDispatchNamespaceConfigKeySet ¶
type JobConnectionSettingsDispatchNamespaceConfigKeySet struct {
// Application selects dispatch.namespace.application. Set accepts string.
Application config.Key[JobConnectionSettings, string]
// Environment selects dispatch.namespace.environment. Set accepts string.
Environment config.Key[JobConnectionSettings, string]
}
JobConnectionSettingsDispatchNamespaceConfigKeySet exposes compiler-checked configuration overrides.
type JobConnectionSettingsQueueConfigKeySet ¶
type JobConnectionSettingsQueueConfigKeySet struct {
// MaxEntries selects queue.max_entries. Set accepts int.
MaxEntries config.Key[JobConnectionSettings, int]
// MaxBytes selects queue.max_bytes. Set accepts int64.
MaxBytes config.Key[JobConnectionSettings, int64]
// MaxHistory selects queue.max_history. Set accepts int.
MaxHistory config.Key[JobConnectionSettings, int]
// Retention selects queue.retention. Set accepts time.Duration.
Retention config.Key[JobConnectionSettings, time.Duration]
// MaxRetained selects queue.max_retained. Set accepts int.
MaxRetained config.Key[JobConnectionSettings, int]
}
JobConnectionSettingsQueueConfigKeySet exposes compiler-checked configuration overrides.
type JobConnections ¶
type JobConnections map[jobs.ConnectionName]JobConnectionSettings
JobConnections maps job connection names to settings.
func (*JobConnections) UnmarshalText ¶
func (m *JobConnections) UnmarshalText(data []byte) error
UnmarshalText decodes job connection settings, replacing the receiver only on success.
type JobsSettings ¶
type JobsSettings struct {
Default jobs.ConnectionName
Connections JobConnections
}
JobsSettings configures named job connections and their default.
func DefaultJobsSettings ¶
func DefaultJobsSettings() JobsSettings
DefaultJobsSettings returns job settings selecting the default connection name.
type LocalDiskSettings ¶
LocalDiskSettings configures local disk root, scan budget, and synchronization.
type MailAPISettings ¶
type MailAPISettings struct {
Endpoint string
Timeout time.Duration
Token secret.String
AccountID string
Domain string
MessageStream string
Region string
ConfigurationSet string
Credentials credentials.Name
}
MailAPISettings configures HTTP email providers and their credentials and provider-specific options.
type MailDriver ¶
type MailDriver string
MailDriver selects an email transport implementation.
const ( LogMail MailDriver = "log" MemoryMail MailDriver = "memory" SMTPMail MailDriver = "smtp" SESMail MailDriver = "ses" ResendMail MailDriver = "resend" CloudflareMail MailDriver = "cloudflare" PostmarkMail MailDriver = "postmark" MailgunMail MailDriver = "mailgun" // FailoverMail tries Transports in order; RoundRobinMail starts each send at // the next one. Both move on only after a known non-acceptance (Transient). FailoverMail MailDriver = "failover" RoundRobinMail MailDriver = "roundrobin" // PreviewMail logs the rendered message for local development; it // records private content and delivers nothing. PreviewMail MailDriver = "preview" )
type MailSettings ¶
type MailSettings struct {
Default email.MailerName
Mailers Mailers `config:",secret"`
}
MailSettings configures named mailers and their default.
func DefaultMailSettings ¶
func DefaultMailSettings() MailSettings
DefaultMailSettings returns mail settings selecting the default mailer name.
type MailerSettings ¶
type MailerSettings struct {
Driver MailDriver
Config email.Config
SMTP SMTPSettings
API MailAPISettings
MemoryCapacity int
Transports []email.MailerName `config:",json"`
}
MailerSettings keeps transport configuration separate from typed message data. From is required when enabling a mailer; defaults simulate acceptance through logs.
Transports names 2 to 8 other configured mailers composed by the failover and roundrobin drivers. Each composition owns its own transport instances built from those mailers' settings; referenced mailers cannot themselves compose.
func DefaultMailerSettings ¶
func DefaultMailerSettings() MailerSettings
DefaultMailerSettings returns defaults for logging delivery, mailer budgets, SMTP, HTTP APIs, and memory capture.
type MailerSettingsAPIConfigKeySet ¶
type MailerSettingsAPIConfigKeySet struct {
// Endpoint selects api.endpoint. Set accepts string.
Endpoint config.Key[MailerSettings, string]
// Timeout selects api.timeout. Set accepts time.Duration.
Timeout config.Key[MailerSettings, time.Duration]
// Token selects api.token. Set accepts secret.String.
Token config.Key[MailerSettings, secret.String]
// AccountID selects api.account_id. Set accepts string.
AccountID config.Key[MailerSettings, string]
// Domain selects api.domain. Set accepts string.
Domain config.Key[MailerSettings, string]
// MessageStream selects api.message_stream. Set accepts string.
MessageStream config.Key[MailerSettings, string]
// Region selects api.region. Set accepts string.
Region config.Key[MailerSettings, string]
// ConfigurationSet selects api.configuration_set. Set accepts string.
ConfigurationSet config.Key[MailerSettings, string]
// Credentials selects api.credentials. Set accepts credentials.Name.
Credentials config.Key[MailerSettings, credentials.Name]
}
MailerSettingsAPIConfigKeySet exposes compiler-checked configuration overrides.
type MailerSettingsConfigConfigKeySet ¶
type MailerSettingsConfigConfigKeySet struct {
// From selects config.from. Set accepts email.Address.
//
// From supplies Mailer.Message; explicit NewMessage senders are never replaced.
//
From config.Key[MailerSettings, email.Address]
// MaxActive selects config.max_active. Set accepts int.
MaxActive config.Key[MailerSettings, int]
// MaxMessageBytes selects config.max_message_bytes. Set accepts int.
MaxMessageBytes config.Key[MailerSettings, int]
// MaxAttachmentBytes selects config.max_attachment_bytes. Set accepts int.
MaxAttachmentBytes config.Key[MailerSettings, int]
// Timeout selects config.timeout. Set accepts time.Duration.
Timeout config.Key[MailerSettings, time.Duration]
// MessageIDDomain selects config.message_id_domain. Set accepts string.
//
// MessageIDDomain is the right-hand side of generated Message-ID headers.
// Empty uses each message's sender domain.
//
MessageIDDomain config.Key[MailerSettings, string]
}
MailerSettingsConfigConfigKeySet exposes compiler-checked configuration overrides.
type MailerSettingsConfigKeySet ¶
type MailerSettingsConfigKeySet struct {
// Driver selects driver. Set accepts MailDriver.
Driver config.Key[MailerSettings, MailDriver]
Config MailerSettingsConfigConfigKeySet
SMTP MailerSettingsSMTPConfigKeySet
API MailerSettingsAPIConfigKeySet
// MemoryCapacity selects memory_capacity. Set accepts int.
MemoryCapacity config.Key[MailerSettings, int]
// Transports selects transports. Set accepts []email.MailerName.
Transports config.Key[MailerSettings, []email.MailerName]
}
MailerSettingsConfigKeySet exposes compiler-checked configuration overrides.
func MailerSettingsConfigKeys ¶
func MailerSettingsConfigKeys() MailerSettingsConfigKeySet
MailerSettingsConfigKeys derives keys from the handwritten settings declaration.
type MailerSettingsSMTPConfigKeySet ¶
type MailerSettingsSMTPConfigKeySet struct {
// Address selects smtp.address. Set accepts string.
Address config.Key[MailerSettings, string]
// Security selects smtp.security. Set accepts smtp.Security.
Security config.Key[MailerSettings, smtp.Security]
// Username selects smtp.username. Set accepts string.
Username config.Key[MailerSettings, string]
// Password selects smtp.password. Set accepts secret.String.
Password config.Key[MailerSettings, secret.String]
// Auth selects smtp.auth. Set accepts smtp.Mechanism.
Auth config.Key[MailerSettings, smtp.Mechanism]
// LocalName selects smtp.local_name. Set accepts string.
LocalName config.Key[MailerSettings, string]
// Timeout selects smtp.timeout. Set accepts time.Duration.
Timeout config.Key[MailerSettings, time.Duration]
// MaxIdle selects smtp.max_idle. Set accepts int.
MaxIdle config.Key[MailerSettings, int]
// IdleTimeout selects smtp.idle_timeout. Set accepts time.Duration.
IdleTimeout config.Key[MailerSettings, time.Duration]
}
MailerSettingsSMTPConfigKeySet exposes compiler-checked configuration overrides.
type Mailers ¶
type Mailers map[email.MailerName]MailerSettings
Mailers maps mailer names to settings.
func (*Mailers) UnmarshalText ¶
UnmarshalText decodes mailer settings, replacing the receiver only on success.
type MigrationGroup ¶
type MigrationGroup struct {
Connections []database.ConnectionName
Schema string
Definitions []migrate.Definition
}
MigrationGroup is one migration history: every target addressing the same configured primary database endpoint and schema, merged into one definition set. Connections lists every configured name that addresses it, sorted; any of them can run the group because they reach the same database and schema.
func (MigrationGroup) PostgresConfig ¶
func (g MigrationGroup) PostgresConfig(base migrate.PostgresConfig) migrate.PostgresConfig
PostgresConfig keeps the group's history in its own schema (<schema>.<base.Table>, by default <schema>.schema_migrations) and runs its unqualified SQL with that schema as the search path. Other bounds come from base.
type MigrationTarget ¶
type MigrationTarget struct {
Connection database.ConnectionName
Schema string
Definitions []migrate.Definition
}
MigrationTarget contributes definitions to an explicit migration command. It never runs during normal application boot. Multiple stores sharing one target return one contribution; the existing migration registry owns deduplication.
type Option ¶
type Option func(*options) error
Option applies configuration to infrastructure planning.
func WithCredentials ¶
func WithCredentials(name credentials.Name, provider credentials.Provider) Option
WithCredentials installs an explicitly borrowed rotating provider. Its caller owns lifecycle and keeps it alive until the whole application has drained.
func WithDatabaseEncryption ¶
func WithDatabaseEncryption(keys *encryption.Keyring) Option
WithDatabaseEncryption gives every configured database connection the key ring that encrypted model fields (database/encrypted) seal and open with.
func WithLogger ¶
WithLogger borrows the containing application's structured logger.
func WithMailDriver ¶
func WithMailDriver(name MailDriver, driver email.Driver) Option
WithMailDriver extends configured mailers with one borrowed driver. Its owner must outlive application shutdown. Built-in driver names cannot be replaced.
func WithQueryObserver ¶
func WithQueryObserver(observer database.QueryObserver) Option
WithQueryObserver installs one borrowed observer on all configured database pools. Nil or repeated observers are invalid, as with database.WithQueryObserver. Example: infrastructure.Configure(settings, infrastructure.WithQueryObserver(observer)).
func WithRedisStores ¶
func WithRedisStores(stores ...RedisStore) Option
WithRedisStores snapshots application declarations before plan resolution.
func WithStatementDetector ¶
func WithStatementDetector(detector *database.StatementDetector) Option
WithStatementDetector installs one borrowed detector on every named database. Defaults still alias their named pool; no additional pool is constructed.
type Plan ¶
type Plan struct {
// contains filtered or unexported fields
}
Plan holds prepared infrastructure configuration and providers.
func Configure ¶
Configure freezes a settings snapshot and constructs provider definitions. It does not open files, retrieve credentials, connect pools or execute migrations.
func (Plan) Format ¶
Plans retain configuration privately; formatting must not reflect through those private fields and bypass nested secret.String formatting.
func (*Plan) Migrations ¶
func (p *Plan) Migrations() []MigrationTarget
Migrations returns cache migration targets deduplicated by connection and schema; a nil plan returns nil.
func (*Plan) Providers ¶
func (p *Plan) Providers() []foundation.Provider
Providers returns a fresh declaration slice. Every registration constructs independent services, so the same plan may be used by independent applications.
func (*Plan) RedisKeys ¶
func (p *Plan) RedisKeys() []RedisConnectionInventory
RedisKeys returns an owned, sorted and deduplicated snapshot of resolved Redis consumers. It performs no I/O. Unused connections and non-Redis stores add nothing. Arbitrary providers registered outside the plan are not inspectable; declare application stores with WithRedisStores to include them.
func (*Plan) Register ¶
func (p *Plan) Register(builder *foundation.Builder) *foundation.Builder
Register registers the plan's providers with the supplied builder.
func (*Plan) Worker ¶
func (p *Plan) Worker(owner foundation.ProviderID, name jobs.ConnectionName, config jobs.WorkerConfig, requires []foundation.ProviderID) (foundation.Module, error)
Worker selects one configured connection without duplicating its namespace or default queue. It registers no resources until the returned module is added.
type PostgreSQLSettings ¶
type PostgreSQLSettings struct {
Host string
Port uint16
Database, User string
Schema string
Password secret.String
TLS postgres.TLSMode
ApplicationName string
Pool database.PoolConfig
StatementCacheCapacity, MaxProtocolMessageBytes int
StatementTimeout time.Duration
LockTimeout time.Duration
IdleInTransactionSessionTimeout time.Duration
}
PostgreSQLSettings is the serializable subset of postgres.Config. The explicit adapter API remains available for custom certificates/native customization.
func PostgreSQLSettingsFromConfig ¶
func PostgreSQLSettingsFromConfig(c postgres.Config) PostgreSQLSettings
PostgreSQLSettingsFromConfig converts PostgreSQL driver configuration to infrastructure settings.
func (PostgreSQLSettings) Config ¶
func (s PostgreSQLSettings) Config() postgres.Config
Config converts infrastructure settings to PostgreSQL driver configuration.
type PostgresCacheSettings ¶
type PostgresCacheSettings struct {
Schema string
MaxEntries int
MaxBytes int64
PruneInterval time.Duration
}
PostgresCacheSettings configures the PostgreSQL adapter. PruneInterval runs automatic deletion of expired rows while started; zero disables it.
type PubSubSettings ¶
type PubSubSettings struct {
Default pubsub.ConnectionName
Connections Brokers
}
PubSubSettings configures named pub/sub connections and their default.
func DefaultPubSubSettings ¶
func DefaultPubSubSettings() PubSubSettings
DefaultPubSubSettings returns pub/sub settings selecting the default connection name.
type RealtimeConnectionSettings ¶
type RealtimeConnectionSettings struct {
Driver RealtimeDriver
Redis redis.ConnectionName
Cluster websocket.ClusterConfig
}
RealtimeConnectionSettings configures a realtime driver, optional Redis connection, and cluster behavior.
func DefaultRealtimeConnectionSettings ¶
func DefaultRealtimeConnectionSettings() RealtimeConnectionSettings
DefaultRealtimeConnectionSettings returns default settings for a local realtime connection.
type RealtimeConnectionSettingsClusterBufferConfigKeySet ¶
type RealtimeConnectionSettingsClusterBufferConfigKeySet struct {
// Messages selects cluster.buffer.messages. Set accepts int.
Messages config.Key[RealtimeConnectionSettings, int]
// Bytes selects cluster.buffer.bytes. Set accepts int.
Bytes config.Key[RealtimeConnectionSettings, int]
// PayloadBytes selects cluster.buffer.payload_bytes. Set accepts int.
PayloadBytes config.Key[RealtimeConnectionSettings, int]
// Channels selects cluster.buffer.channels. Set accepts int.
Channels config.Key[RealtimeConnectionSettings, int]
}
RealtimeConnectionSettingsClusterBufferConfigKeySet exposes compiler-checked configuration overrides.
type RealtimeConnectionSettingsClusterConfigKeySet ¶
type RealtimeConnectionSettingsClusterConfigKeySet struct {
Namespace RealtimeConnectionSettingsClusterNamespaceConfigKeySet
// MaxConnections selects cluster.max_connections. Set accepts int.
MaxConnections config.Key[RealtimeConnectionSettings, int]
// MaxConnectionsPerSubject selects cluster.max_connections_per_subject. Set accepts int.
MaxConnectionsPerSubject config.Key[RealtimeConnectionSettings, int]
// ConnectionTTL selects cluster.connection_ttl. Set accepts time.Duration.
ConnectionTTL config.Key[RealtimeConnectionSettings, time.Duration]
// OperationTimeout selects cluster.operation_timeout. Set accepts time.Duration.
OperationTimeout config.Key[RealtimeConnectionSettings, time.Duration]
Buffer RealtimeConnectionSettingsClusterBufferConfigKeySet
// RetainConnectionsOnGap selects cluster.retain_connections_on_gap. Set accepts bool.
//
// RetainConnectionsOnGap keeps local sockets open across a lost fan-out
// stream; events published during the gap are then missed silently. The
// default closes them with a retryable status so clients reconnect and
// request replay.
//
RetainConnectionsOnGap config.Key[RealtimeConnectionSettings, bool]
// ExcludeRemoteConnections selects cluster.exclude_remote_connections. Set accepts bool.
//
// ExcludeRemoteConnections lets ExceptConnection name a connection hosted
// by another instance by carrying the exclusion in the fan-out envelope.
// Instances before this field reject such envelopes, so enable it only
// once every instance in the namespace runs a release that has it.
// Excluding a connection of this instance (RelayToOthers) never needs it.
//
ExcludeRemoteConnections config.Key[RealtimeConnectionSettings, bool]
}
RealtimeConnectionSettingsClusterConfigKeySet exposes compiler-checked configuration overrides.
type RealtimeConnectionSettingsClusterNamespaceConfigKeySet ¶
type RealtimeConnectionSettingsClusterNamespaceConfigKeySet struct {
// Application selects cluster.namespace.application. Set accepts string.
Application config.Key[RealtimeConnectionSettings, string]
// Environment selects cluster.namespace.environment. Set accepts string.
Environment config.Key[RealtimeConnectionSettings, string]
}
RealtimeConnectionSettingsClusterNamespaceConfigKeySet exposes compiler-checked configuration overrides.
type RealtimeConnectionSettingsConfigKeySet ¶
type RealtimeConnectionSettingsConfigKeySet struct {
// Driver selects driver. Set accepts RealtimeDriver.
Driver config.Key[RealtimeConnectionSettings, RealtimeDriver]
// Redis selects redis. Set accepts redis.ConnectionName.
Redis config.Key[RealtimeConnectionSettings, redis.ConnectionName]
Cluster RealtimeConnectionSettingsClusterConfigKeySet
}
RealtimeConnectionSettingsConfigKeySet exposes compiler-checked configuration overrides.
func RealtimeConnectionSettingsConfigKeys ¶
func RealtimeConnectionSettingsConfigKeys() RealtimeConnectionSettingsConfigKeySet
RealtimeConnectionSettingsConfigKeys derives keys from the handwritten settings declaration.
type RealtimeConnections ¶
type RealtimeConnections map[websocket.ConnectionName]RealtimeConnectionSettings
RealtimeConnections maps realtime connection names to settings.
func (*RealtimeConnections) UnmarshalText ¶
func (m *RealtimeConnections) UnmarshalText(data []byte) error
UnmarshalText decodes realtime connection settings, replacing the receiver only on success.
type RealtimeDriver ¶
type RealtimeDriver string
RealtimeDriver selects a realtime connection implementation.
const ( LocalRealtime RealtimeDriver = "local" RedisRealtime RealtimeDriver = "redis" )
type RealtimeSettings ¶
type RealtimeSettings struct {
Default websocket.ConnectionName
Connections RealtimeConnections
}
RealtimeSettings configures named realtime connections and their default.
func DefaultRealtimeSettings ¶
func DefaultRealtimeSettings() RealtimeSettings
DefaultRealtimeSettings returns realtime settings selecting the default connection name.
type RedisConnectionInventory ¶
type RedisConnectionInventory struct {
Connection redis.ConnectionName `json:"connection"`
Keys []RedisKeySpace `json:"keys"`
Channels []RedisKeySpace `json:"channels"`
}
RedisConnectionInventory separates key permissions (~pattern) from pub/sub channel permissions (&pattern). It contains no connection configuration.
type RedisConnectionSettings ¶
type RedisConnectionSettings struct {
Host string
Port uint16
Database int
User string
Password secret.String
TLS redis.TLSMode
MaxConnections, MaxOperations, MaxSubscriptions int
ConnectTimeout, OperationTimeout, PoolTimeout, MaxIdleTime, MaxLifetime time.Duration
MaxValueBytes int
}
RedisConnectionSettings addresses one standalone server, with verified TLS by default. Custom TLS certificates use the advanced redis.Config/module API.
func DefaultRedisConnectionSettings ¶
func DefaultRedisConnectionSettings() RedisConnectionSettings
DefaultRedisConnectionSettings returns default Redis connection settings.
func RedisSettingsFromConfig ¶
func RedisSettingsFromConfig(c redis.Config) RedisConnectionSettings
RedisSettingsFromConfig converts Redis driver configuration to infrastructure settings.
func (RedisConnectionSettings) Config ¶
func (s RedisConnectionSettings) Config() redis.Config
Config converts infrastructure settings to Redis driver configuration.
func (RedisConnectionSettings) Validate ¶
func (s RedisConnectionSettings) Validate() error
Validate validates the derived Redis configuration.
type RedisConnectionSettingsConfigKeySet ¶
type RedisConnectionSettingsConfigKeySet struct {
// Host selects host. Set accepts string.
Host config.Key[RedisConnectionSettings, string]
// Port selects port. Set accepts uint16.
Port config.Key[RedisConnectionSettings, uint16]
// Database selects database. Set accepts int.
Database config.Key[RedisConnectionSettings, int]
// User selects user. Set accepts string.
User config.Key[RedisConnectionSettings, string]
// Password selects password. Set accepts secret.String.
Password config.Key[RedisConnectionSettings, secret.String]
// TLS selects tls. Set accepts redis.TLSMode.
TLS config.Key[RedisConnectionSettings, redis.TLSMode]
// MaxConnections selects max_connections. Set accepts int.
MaxConnections config.Key[RedisConnectionSettings, int]
// MaxOperations selects max_operations. Set accepts int.
MaxOperations config.Key[RedisConnectionSettings, int]
// MaxSubscriptions selects max_subscriptions. Set accepts int.
MaxSubscriptions config.Key[RedisConnectionSettings, int]
// ConnectTimeout selects connect_timeout. Set accepts time.Duration.
ConnectTimeout config.Key[RedisConnectionSettings, time.Duration]
// OperationTimeout selects operation_timeout. Set accepts time.Duration.
OperationTimeout config.Key[RedisConnectionSettings, time.Duration]
// PoolTimeout selects pool_timeout. Set accepts time.Duration.
PoolTimeout config.Key[RedisConnectionSettings, time.Duration]
// MaxIdleTime selects max_idle_time. Set accepts time.Duration.
MaxIdleTime config.Key[RedisConnectionSettings, time.Duration]
// MaxLifetime selects max_lifetime. Set accepts time.Duration.
MaxLifetime config.Key[RedisConnectionSettings, time.Duration]
// MaxValueBytes selects max_value_bytes. Set accepts int.
MaxValueBytes config.Key[RedisConnectionSettings, int]
}
RedisConnectionSettingsConfigKeySet exposes compiler-checked configuration overrides.
func RedisConnectionSettingsConfigKeys ¶
func RedisConnectionSettingsConfigKeys() RedisConnectionSettingsConfigKeySet
RedisConnectionSettingsConfigKeys derives keys from the handwritten settings declaration.
type RedisConnections ¶
type RedisConnections map[redis.ConnectionName]RedisConnectionSettings
RedisConnections maps Redis connection names to settings.
func (*RedisConnections) UnmarshalText ¶
func (m *RedisConnections) UnmarshalText(data []byte) error
UnmarshalText decodes Redis connection settings, replacing the receiver only on success.
type RedisKeySpace ¶
type RedisKeySpace struct {
Feature keyspace.Feature `json:"feature"`
Namespace keyspace.Namespace `json:"namespace"`
Version string `json:"version"`
Prefix string `json:"prefix"`
}
RedisKeySpace describes one exact physical address prefix. Namespace components are validated and contain no Redis glob metacharacters. Prefix + "*" is an ACL pattern; never replace feature, application or environment with a wildcard.
type RedisSettings ¶
type RedisSettings struct {
Default redis.ConnectionName
MaxConnections int
Connections RedisConnections `config:",secret"`
}
RedisSettings configures named Redis connections, their default, and the total connection budget.
func DefaultRedisSettings ¶
func DefaultRedisSettings() RedisSettings
DefaultRedisSettings returns Redis settings selecting the default name with a 1024-connection budget.
type RedisStore ¶
type RedisStore interface {
// contains filtered or unexported methods
}
RedisStore is a sealed application store declaration. Its typed constructor owns both runtime construction and inventory metadata. A zero namespace uses the application namespace; an empty connection selects the Redis default.
func RedisLockoutStore ¶
func RedisLockoutStore(key foundation.Key[*lockout.Store], connection redis.ConnectionName, config lockout.Config) RedisStore
RedisLockoutStore declares a borrowing credential-protection store. Its config and connection are shared by runtime construction and service-free inspection.
func RedisRateLimitStore ¶
func RedisRateLimitStore(key foundation.Key[*ratelimit.Store], connection redis.ConnectionName, config ratelimit.Config) RedisStore
RedisRateLimitStore declares a borrowing rate-limit store under a typed service key. The key name follows named-service syntax. Resolve it during bootstrap, then bind ordinary ratelimit declarations to the resulting store.
type SMTPSettings ¶
type SMTPSettings struct {
Address string
Security smtp.Security
Username string
Password secret.String
Auth smtp.Mechanism
LocalName string
Timeout time.Duration
MaxIdle int
IdleTimeout time.Duration
}
SMTPSettings configures the SMTP transport. Auth selects plain, login or xoauth2 (the password is then the OAuth access token). LocalName overrides the EHLO name. MaxIdle > 0 reuses up to that many idle connections for IdleTimeout.
type Services ¶
type Services struct {
Databases *database.Connections
Redis *redis.Connections
Storage *storage.Registry
Caches *cache.Stores
Mailers *email.Mailers
Jobs *jobs.Connections
HTTPClients *httpclient.Clients
Brokers *pubsub.Brokers
Realtime *websocket.Connections
Coordination *lease.Manager
}
Services supplies typed constructor dependencies. Disabled families have no registry. Default access is automatic and errors if that family is disabled.
func (*Services) HTTPClient ¶
func (s *Services) HTTPClient() (*httpclient.Client, error)
HTTPClient returns the default HTTP client or a registry error.
func (*Services) JobConnection ¶
func (s *Services) JobConnection() (*jobs.Connection, error)
JobConnection returns the default job connection or a registry error.
func (*Services) Leases ¶
Leases returns the coordination manager, or a missing fault if unconfigured.
func (*Services) RealtimeConnection ¶
func (s *Services) RealtimeConnection() (*websocket.BackendConnection, error)
RealtimeConnection returns the default realtime connection or a registry error.
type Settings ¶
type Settings struct {
Namespace keyspace.Namespace
Database DatabaseSettings
Redis RedisSettings
Storage StorageSettings
Cache CachesSettings
Mail MailSettings
Jobs JobsSettings
HTTPClients HTTPClientsSettings
PubSub PubSubSettings
Realtime RealtimeSettings
Coordination CoordinationSettings
Credentials CredentialSources `config:",secret"`
}
Settings enables each family by supplying a nonempty collection. Its Default names an existing entry; omitted backend references select that default.
func DefaultSettings ¶
func DefaultSettings() Settings
DefaultSettings returns infrastructure defaults for the development application namespace.
func (Settings) Validate ¶
Validate performs the same pure checks used by Configure, without preparing adapters. Custom credential providers must instead be supplied to Configure.
func (Settings) WithDatabaseScopes ¶
func (s Settings) WithDatabaseScopes(databases DatabaseSettings) (Settings, error)
WithDatabaseScopes returns independently owned database/cache maps. A blank or public feature schema means the conventional default; other explicit schemas must already match their selected connection. No I/O or migrations run here.
type SettingsCacheConfigKeySet ¶
type SettingsCacheConfigKeySet struct {
// Default selects cache.default. Set accepts cache.StoreName.
Default config.Key[Settings, cache.StoreName]
// Stores selects cache.stores. Set accepts CacheStores.
Stores config.Key[Settings, CacheStores]
}
SettingsCacheConfigKeySet exposes compiler-checked configuration overrides.
type SettingsConfigKeySet ¶
type SettingsConfigKeySet struct {
Namespace SettingsNamespaceConfigKeySet
Database SettingsDatabaseConfigKeySet
Redis SettingsRedisConfigKeySet
Storage SettingsStorageConfigKeySet
Cache SettingsCacheConfigKeySet
Mail SettingsMailConfigKeySet
Jobs SettingsJobsConfigKeySet
HTTPClients SettingsHTTPClientsConfigKeySet
PubSub SettingsPubSubConfigKeySet
Realtime SettingsRealtimeConfigKeySet
Coordination SettingsCoordinationConfigKeySet
// Credentials selects credentials. Set accepts CredentialSources.
Credentials config.Key[Settings, CredentialSources]
}
SettingsConfigKeySet exposes compiler-checked configuration overrides.
func SettingsConfigKeys ¶
func SettingsConfigKeys() SettingsConfigKeySet
SettingsConfigKeys derives keys from the handwritten settings declaration.
type SettingsCoordinationConfigConfigKeySet ¶
type SettingsCoordinationConfigConfigKeySet struct {
Namespace SettingsCoordinationConfigNamespaceConfigKeySet
// MaxActive selects coordination.config.max_active. Set accepts int.
MaxActive config.Key[Settings, int]
// MaxDeclarations selects coordination.config.max_declarations. Set accepts int.
MaxDeclarations config.Key[Settings, int]
// MaxKeyBytes selects coordination.config.max_key_bytes. Set accepts int.
MaxKeyBytes config.Key[Settings, int]
// OperationTimeout selects coordination.config.operation_timeout. Set accepts time.Duration.
OperationTimeout config.Key[Settings, time.Duration]
// MaxWait selects coordination.config.max_wait. Set accepts time.Duration.
MaxWait config.Key[Settings, time.Duration]
// PollInterval selects coordination.config.poll_interval. Set accepts time.Duration.
PollInterval config.Key[Settings, time.Duration]
}
SettingsCoordinationConfigConfigKeySet exposes compiler-checked configuration overrides.
type SettingsCoordinationConfigKeySet ¶
type SettingsCoordinationConfigKeySet struct {
// Enabled selects coordination.enabled. Set accepts bool.
Enabled config.Key[Settings, bool]
// Driver selects coordination.driver. Set accepts CoordinationDriver.
Driver config.Key[Settings, CoordinationDriver]
// Redis selects coordination.redis. Set accepts redis.ConnectionName.
Redis config.Key[Settings, redis.ConnectionName]
Config SettingsCoordinationConfigConfigKeySet
// MaxEntries selects coordination.max_entries. Set accepts int.
MaxEntries config.Key[Settings, int]
}
SettingsCoordinationConfigKeySet exposes compiler-checked configuration overrides.
type SettingsCoordinationConfigNamespaceConfigKeySet ¶
type SettingsCoordinationConfigNamespaceConfigKeySet struct {
// Application selects coordination.config.namespace.application. Set accepts string.
Application config.Key[Settings, string]
// Environment selects coordination.config.namespace.environment. Set accepts string.
Environment config.Key[Settings, string]
}
SettingsCoordinationConfigNamespaceConfigKeySet exposes compiler-checked configuration overrides.
type SettingsDatabaseConfigKeySet ¶
type SettingsDatabaseConfigKeySet struct {
// Default selects database.default. Set accepts database.ConnectionName.
Default config.Key[Settings, database.ConnectionName]
// MaxConnections selects database.max_connections. Set accepts int.
MaxConnections config.Key[Settings, int]
// Connections selects database.connections. Set accepts DatabaseConnections.
Connections config.Key[Settings, DatabaseConnections]
}
SettingsDatabaseConfigKeySet exposes compiler-checked configuration overrides.
type SettingsHTTPClientsConfigKeySet ¶
type SettingsHTTPClientsConfigKeySet struct {
// Default selects http_clients.default. Set accepts httpclient.Name.
Default config.Key[Settings, httpclient.Name]
// Clients selects http_clients.clients. Set accepts HTTPClients.
Clients config.Key[Settings, HTTPClients]
}
SettingsHTTPClientsConfigKeySet exposes compiler-checked configuration overrides.
type SettingsJobsConfigKeySet ¶
type SettingsJobsConfigKeySet struct {
// Default selects jobs.default. Set accepts jobs.ConnectionName.
Default config.Key[Settings, jobs.ConnectionName]
// Connections selects jobs.connections. Set accepts JobConnections.
Connections config.Key[Settings, JobConnections]
}
SettingsJobsConfigKeySet exposes compiler-checked configuration overrides.
type SettingsMailConfigKeySet ¶
type SettingsMailConfigKeySet struct {
// Default selects mail.default. Set accepts email.MailerName.
Default config.Key[Settings, email.MailerName]
// Mailers selects mail.mailers. Set accepts Mailers.
Mailers config.Key[Settings, Mailers]
}
SettingsMailConfigKeySet exposes compiler-checked configuration overrides.
type SettingsNamespaceConfigKeySet ¶
type SettingsNamespaceConfigKeySet struct {
// Application selects namespace.application. Set accepts string.
Application config.Key[Settings, string]
// Environment selects namespace.environment. Set accepts string.
Environment config.Key[Settings, string]
}
SettingsNamespaceConfigKeySet exposes compiler-checked configuration overrides.
type SettingsPubSubConfigKeySet ¶
type SettingsPubSubConfigKeySet struct {
// Default selects pub_sub.default. Set accepts pubsub.ConnectionName.
Default config.Key[Settings, pubsub.ConnectionName]
// Connections selects pub_sub.connections. Set accepts Brokers.
Connections config.Key[Settings, Brokers]
}
SettingsPubSubConfigKeySet exposes compiler-checked configuration overrides.
type SettingsRealtimeConfigKeySet ¶
type SettingsRealtimeConfigKeySet struct {
// Default selects realtime.default. Set accepts websocket.ConnectionName.
Default config.Key[Settings, websocket.ConnectionName]
// Connections selects realtime.connections. Set accepts RealtimeConnections.
Connections config.Key[Settings, RealtimeConnections]
}
SettingsRealtimeConfigKeySet exposes compiler-checked configuration overrides.
type SettingsRedisConfigKeySet ¶
type SettingsRedisConfigKeySet struct {
// Default selects redis.default. Set accepts redis.ConnectionName.
Default config.Key[Settings, redis.ConnectionName]
// MaxConnections selects redis.max_connections. Set accepts int.
MaxConnections config.Key[Settings, int]
// Connections selects redis.connections. Set accepts RedisConnections.
Connections config.Key[Settings, RedisConnections]
}
SettingsRedisConfigKeySet exposes compiler-checked configuration overrides.
type SettingsStorageConfigKeySet ¶
type SettingsStorageConfigKeySet struct {
// Default selects storage.default. Set accepts storage.DiskID.
Default config.Key[Settings, storage.DiskID]
// Disks selects storage.disks. Set accepts Disks.
Disks config.Key[Settings, Disks]
}
SettingsStorageConfigKeySet exposes compiler-checked configuration overrides.
type StorageSettings ¶
StorageSettings configures named storage disks and their default.
func DefaultStorageSettings ¶
func DefaultStorageSettings() StorageSettings
DefaultStorageSettings returns storage settings selecting the default disk name.
Source Files
¶
- broker_providers.go
- broker_settings.go
- broker_settings_foundry.gen.go
- cache_providers.go
- cache_settings.go
- cache_settings_foundry.gen.go
- connection_settings_foundry.gen.go
- coordination_providers.go
- coordination_settings.go
- database_scopes.go
- database_settings.go
- disk_settings_foundry.gen.go
- http_client_settings_foundry.gen.go
- httpclient_settings.go
- job_connection_settings_foundry.gen.go
- job_providers.go
- job_settings.go
- mail_providers.go
- mail_settings.go
- mailer_settings_foundry.gen.go
- migration_groups.go
- owned_adapter.go
- providers.go
- realtime_connection_settings_foundry.gen.go
- redis_connection_settings_foundry.gen.go
- redis_inventory.go
- redis_settings.go
- redis_stores.go
- services.go
- settings.go
- settings_foundry.gen.go
- storage_registry.go
- storage_settings.go
- supporting_providers.go
- supporting_services.go
- supporting_validation.go