Documentation
¶
Index ¶
Constants ¶
const ApplicationName = "onboarding"
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
EnvName string `env:"ENV_NAME"`
LogLevel string `env:"LOG_LEVEL"`
// Server address - prefixed for unified ledger deployment
PrefixedServerAddress string `env:"SERVER_ADDRESS_ONBOARDING"`
ServerAddress string `env:"SERVER_ADDRESS"`
// PostgreSQL Primary - prefixed vars for unified ledger deployment
PrefixedPrimaryDBHost string `env:"DB_ONBOARDING_HOST"`
PrefixedPrimaryDBUser string `env:"DB_ONBOARDING_USER"`
PrefixedPrimaryDBPassword string `env:"DB_ONBOARDING_PASSWORD"`
PrefixedPrimaryDBName string `env:"DB_ONBOARDING_NAME"`
PrefixedPrimaryDBPort string `env:"DB_ONBOARDING_PORT"`
PrefixedPrimaryDBSSLMode string `env:"DB_ONBOARDING_SSLMODE"`
// PostgreSQL Primary - fallback vars for standalone deployment
PrimaryDBHost string `env:"DB_HOST"`
PrimaryDBUser string `env:"DB_USER"`
PrimaryDBPassword string `env:"DB_PASSWORD"`
PrimaryDBName string `env:"DB_NAME"`
PrimaryDBPort string `env:"DB_PORT"`
PrimaryDBSSLMode string `env:"DB_SSLMODE"`
// PostgreSQL Replica - prefixed vars for unified ledger deployment
PrefixedReplicaDBHost string `env:"DB_ONBOARDING_REPLICA_HOST"`
PrefixedReplicaDBUser string `env:"DB_ONBOARDING_REPLICA_USER"`
PrefixedReplicaDBPassword string `env:"DB_ONBOARDING_REPLICA_PASSWORD"`
PrefixedReplicaDBName string `env:"DB_ONBOARDING_REPLICA_NAME"`
PrefixedReplicaDBPort string `env:"DB_ONBOARDING_REPLICA_PORT"`
PrefixedReplicaDBSSLMode string `env:"DB_ONBOARDING_REPLICA_SSLMODE"`
// PostgreSQL Replica - fallback vars for standalone deployment
ReplicaDBHost string `env:"DB_REPLICA_HOST"`
ReplicaDBUser string `env:"DB_REPLICA_USER"`
ReplicaDBPassword string `env:"DB_REPLICA_PASSWORD"`
ReplicaDBName string `env:"DB_REPLICA_NAME"`
ReplicaDBPort string `env:"DB_REPLICA_PORT"`
ReplicaDBSSLMode string `env:"DB_REPLICA_SSLMODE"`
// PostgreSQL connection pool - prefixed with fallback
PrefixedMaxOpenConnections int `env:"DB_ONBOARDING_MAX_OPEN_CONNS"`
PrefixedMaxIdleConnections int `env:"DB_ONBOARDING_MAX_IDLE_CONNS"`
MaxOpenConnections int `env:"DB_MAX_OPEN_CONNS"`
MaxIdleConnections int `env:"DB_MAX_IDLE_CONNS"`
// MongoDB - prefixed vars for unified ledger deployment
PrefixedMongoURI string `env:"MONGO_ONBOARDING_URI"`
PrefixedMongoDBHost string `env:"MONGO_ONBOARDING_HOST"`
PrefixedMongoDBName string `env:"MONGO_ONBOARDING_NAME"`
PrefixedMongoDBUser string `env:"MONGO_ONBOARDING_USER"`
PrefixedMongoDBPassword string `env:"MONGO_ONBOARDING_PASSWORD"`
PrefixedMongoDBPort string `env:"MONGO_ONBOARDING_PORT"`
PrefixedMongoDBParameters string `env:"MONGO_ONBOARDING_PARAMETERS"`
PrefixedMaxPoolSize int `env:"MONGO_ONBOARDING_MAX_POOL_SIZE"`
// MongoDB - fallback vars for standalone deployment
MongoURI string `env:"MONGO_URI"`
MongoDBHost string `env:"MONGO_HOST"`
MongoDBName string `env:"MONGO_NAME"`
MongoDBUser string `env:"MONGO_USER"`
MongoDBPassword string `env:"MONGO_PASSWORD"`
MongoDBPort string `env:"MONGO_PORT"`
MongoDBParameters string `env:"MONGO_PARAMETERS"`
MaxPoolSize int `env:"MONGO_MAX_POOL_SIZE"`
JWKAddress string `env:"CASDOOR_JWK_ADDRESS"`
OtelServiceName string `env:"OTEL_RESOURCE_SERVICE_NAME"`
OtelLibraryName string `env:"OTEL_LIBRARY_NAME"`
OtelServiceVersion string `env:"OTEL_RESOURCE_SERVICE_VERSION"`
OtelDeploymentEnv string `env:"OTEL_RESOURCE_DEPLOYMENT_ENVIRONMENT"`
OtelColExporterEndpoint string `env:"OTEL_EXPORTER_OTLP_ENDPOINT"`
EnableTelemetry bool `env:"ENABLE_TELEMETRY"`
RedisHost string `env:"REDIS_HOST"`
RedisMasterName string `env:"REDIS_MASTER_NAME" default:""`
RedisPassword string `env:"REDIS_PASSWORD"`
RedisDB int `env:"REDIS_DB" default:"0"`
RedisProtocol int `env:"REDIS_DB" default:"3"`
RedisTLS bool `env:"REDIS_TLS" default:"false"`
RedisCACert string `env:"REDIS_CA_CERT"`
RedisUseGCPIAM bool `env:"REDIS_USE_GCP_IAM" default:"false"`
RedisServiceAccount string `env:"REDIS_SERVICE_ACCOUNT" default:""`
GoogleApplicationCredentials string `env:"GOOGLE_APPLICATION_CREDENTIALS" default:""`
RedisTokenLifeTime int `env:"REDIS_TOKEN_LIFETIME" default:"60"`
RedisTokenRefreshDuration int `env:"REDIS_TOKEN_REFRESH_DURATION" default:"45"`
RedisPoolSize int `env:"REDIS_POOL_SIZE" default:"10"`
RedisMinIdleConns int `env:"REDIS_MIN_IDLE_CONNS" default:"0"`
RedisReadTimeout int `env:"REDIS_READ_TIMEOUT" default:"3"`
RedisWriteTimeout int `env:"REDIS_WRITE_TIMEOUT" default:"3"`
RedisDialTimeout int `env:"REDIS_DIAL_TIMEOUT" default:"5"`
RedisPoolTimeout int `env:"REDIS_POOL_TIMEOUT" default:"2"`
RedisMaxRetries int `env:"REDIS_MAX_RETRIES" default:"3"`
RedisMinRetryBackoff int `env:"REDIS_MIN_RETRY_BACKOFF" default:"8"`
RedisMaxRetryBackoff int `env:"REDIS_MAX_RETRY_BACKOFF" default:"1"`
AuthEnabled bool `env:"PLUGIN_AUTH_ENABLED"`
AuthHost string `env:"PLUGIN_AUTH_HOST"`
TransactionGRPCAddress string `env:"TRANSACTION_GRPC_ADDRESS"`
TransactionGRPCPort string `env:"TRANSACTION_GRPC_PORT"`
}
Config is the top level configuration struct for the entire application. Supports prefixed env vars (DB_ONBOARDING_*) with fallback to non-prefixed (DB_*) for backward compatibility.
type Options ¶ added in v3.5.0
type Options struct {
// Logger allows callers (e.g. cmd/app) to provide a pre-configured logger,
// avoiding double initialization and ensuring consistent output.
Logger libLog.Logger
// UnifiedMode indicates the service is running as part of the unified ledger.
// When true, all ports must be provided for in-process communication.
// When false (or Options is nil), uses gRPC adapters for remote communication.
UnifiedMode bool
// BalancePort is the transaction module's BalancePort for direct calls.
// Required when UnifiedMode is true.
// This is typically the transaction.UseCase which implements mbootstrap.BalancePort.
BalancePort mbootstrap.BalancePort
}
Options contains optional dependencies that can be injected when running in unified ledger mode. When nil, defaults to gRPC-based communication.
type Ports ¶ added in v3.5.0
type Ports struct {
// MetadataPort is the MongoDB metadata repository for direct access in unified ledger mode.
MetadataPort mbootstrap.MetadataIndexRepository
}
Ports groups all external interface dependencies for the onboarding service. These are the "ports" in hexagonal architecture that connect to external systems or are exposed to other modules (like unified ledger mode).
type Server ¶
type Server struct {
// contains filtered or unexported fields
}
Server represents the http server for Ledger service.
func NewServer ¶
func NewServer(cfg *Config, app *fiber.App, logger libLog.Logger, telemetry *libOpentelemetry.Telemetry) *Server
NewServer creates an instance of Server.
func (*Server) ServerAddress ¶
ServerAddress returns is a convenience method to return the server address.
type Service ¶
type Service struct {
*Server
Logger libLog.Logger
// Ports groups all external interface dependencies.
Ports Ports
// contains filtered or unexported fields
}
Service is the application glue where we put all top level components to be used.
func InitServers ¶
InitServers initiate http and grpc servers using default gRPC communication.
func InitServersWithOptions ¶ added in v3.5.0
InitServersWithOptions initiates http servers with optional dependency injection. When opts is nil or opts.UnifiedMode is false, uses gRPC for balance operations. When opts.UnifiedMode is true, uses direct in-process calls (unified ledger mode).
func (*Service) GetMetadataIndexPort ¶ added in v3.5.0
func (app *Service) GetMetadataIndexPort() mbootstrap.MetadataIndexRepository
GetMetadataIndexPort returns the metadata index port for use by ledger in unified mode. This allows direct in-process calls for metadata index operations.
func (*Service) GetRouteRegistrar ¶ added in v3.5.0
GetRouteRegistrar returns a function that registers onboarding routes to an existing Fiber app. This is used by the unified ledger server to consolidate all routes in a single port.
func (*Service) GetRunnables ¶ added in v3.5.0
func (app *Service) GetRunnables() []mbootstrap.RunnableConfig
GetRunnables returns all runnable components for composition in unified deployment. Implements mbootstrap.Service interface.