package admin import ( "forge.cadoles.com/cadoles/bouncer/internal/config" "forge.cadoles.com/cadoles/bouncer/internal/integration" ) type Option struct { BootstrapConfig config.BootstrapConfig ServerConfig config.AdminServerConfig RedisConfig config.RedisConfig Integrations []integration.Integration } type OptionFunc func(*Option) func defaultOption() *Option { return &Option{ ServerConfig: config.NewDefaultAdminServerConfig(), RedisConfig: config.NewDefaultRedisConfig(), Integrations: make([]integration.Integration, 0), } } func WithServerConfig(conf config.AdminServerConfig) OptionFunc { return func(opt *Option) { opt.ServerConfig = conf } } func WithRedisConfig(conf config.RedisConfig) OptionFunc { return func(opt *Option) { opt.RedisConfig = conf } } func WithBootstrapConfig(conf config.BootstrapConfig) OptionFunc { return func(opt *Option) { opt.BootstrapConfig = conf } } func WithIntegrations(integrations ...integration.Integration) OptionFunc { return func(opt *Option) { opt.Integrations = integrations } }