Help us shape the future of Go! Take the 2026 Go Developer Survey

infrastructure

package
v0.5.3 Latest Latest
Warning

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

Go to latest
Published: Nov 3, 2026 License: MIT Imports: 61 Imported by: 0

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

View Source
const CoordinationProvider foundation.ProviderID = "foundry.infrastructure.coordination"
View Source
const Provider foundation.ProviderID = "foundry.infrastructure"

Variables

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 CacheKey

func CacheKey(name cache.StoreName) foundation.Key[*cache.Store]

CacheKey returns the typed service key for a named cache store.

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 DiskKey

func DiskKey(name storage.DiskID) foundation.Key[*storage.Disk]

DiskKey returns the typed service key for a named storage disk.

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

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

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.

func SettingsConfigSchema

func SettingsConfigSchema() (*config.Schema[Settings], error)

SettingsConfigSchema reuses the shared file/environment/override loader.

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

Brokers maps pub/sub connection names to broker settings.

func (*Brokers) UnmarshalText

func (m *Brokers) UnmarshalText(data []byte) error

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

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

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

func (m *Disks) UnmarshalText(data []byte) error

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 JobDriver

type JobDriver string

JobDriver selects a job transport implementation.

const (
	MemoryJobs JobDriver = "memory"
	RedisJobs  JobDriver = "redis"
	// SyncJobs runs each dispatched job inline in the dispatching caller
	// (jobs/inline). Like memory it is process-local and non-durable.
	SyncJobs JobDriver = "sync"
)

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

type LocalDiskSettings struct {
	Root    string
	MaxScan int
	Sync    bool
}

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

func (m *Mailers) UnmarshalText(data []byte) error

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

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 WithClock

func WithClock(source clock.Clock) Option

WithClock sets the infrastructure clock, rejecting nil.

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

func WithLogger(logger *slog.Logger) Option

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

func Configure(settings Settings, optionsList ...Option) (*Plan, error)

Configure freezes a settings snapshot and constructs provider definitions. It does not open files, retrieve credentials, connect pools or execute migrations.

func (Plan) Format

func (Plan) Format(s fmt.State, _ rune)

Plans retain configuration privately; formatting must not reflect through those private fields and bypass nested secret.String formatting.

func (Plan) LogValue

func (Plan) LogValue() slog.Value

LogValue returns a fixed log label without exposing plan configuration.

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

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) Broker

func (s *Services) Broker() (*pubsub.Broker, error)

Broker returns the default pub/sub broker or a registry error.

func (*Services) Cache

func (s *Services) Cache() (*cache.Store, error)

Cache returns the default cache store or a registry error.

func (*Services) Database

func (s *Services) Database() (*database.DB, error)

Database returns the default database connection or a registry error.

func (*Services) Disk

func (s *Services) Disk() (*storage.Disk, error)

Disk returns the default storage disk or a registry error.

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

func (s *Services) Leases() (*lease.Manager, error)

Leases returns the coordination manager, or a missing fault if unconfigured.

func (*Services) Mailer

func (s *Services) Mailer() (*email.Mailer, error)

Mailer returns the default mailer or a registry error.

func (*Services) RealtimeConnection

func (s *Services) RealtimeConnection() (*websocket.BackendConnection, error)

RealtimeConnection returns the default realtime connection or a registry error.

func (*Services) RedisConnection

func (s *Services) RedisConnection() (*redis.Client, error)

RedisConnection returns the default Redis 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

func (s Settings) Validate() error

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

type StorageSettings struct {
	Default storage.DiskID
	Disks   Disks
}

StorageSettings configures named storage disks and their default.

func DefaultStorageSettings

func DefaultStorageSettings() StorageSettings

DefaultStorageSettings returns storage settings selecting the default disk name.

Jump to

Keyboard shortcuts

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