bootstrap

package
v3.5.0 Latest Latest
Warning

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

Go to latest
Published: Jan 12, 2026 License: Apache-2.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
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) Run

func (s *Server) Run(l *libCommons.Launcher) error

Run runs the server.

func (*Server) ServerAddress

func (s *Server) ServerAddress() string

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

func InitServers() (*Service, error)

InitServers initiate http and grpc servers using default gRPC communication.

func InitServersWithOptions added in v3.5.0

func InitServersWithOptions(opts *Options) (*Service, error)

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

func (app *Service) GetRouteRegistrar() func(*fiber.App)

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.

func (*Service) Run

func (app *Service) Run()

Run starts the application. This is the only necessary code to run an app in main.go

Jump to

Keyboard shortcuts

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