feat: Introduce global config primitive

This commit is contained in:
abhisek
2025-05-14 16:09:29 +05:30
parent 86a0a8f5a4
commit 8896917c4d
6 changed files with 69 additions and 11 deletions
+32
View File
@@ -0,0 +1,32 @@
package config
import (
"context"
"fmt"
)
type configKey struct{}
type contextValue struct {
Config Config
}
// Global configuration
type Config struct {
Transitive bool
TransitiveDepth int
}
// Inject config into context while protecting against context poisoning
func (c Config) Inject(ctx context.Context) context.Context {
return context.WithValue(ctx, configKey{}, &contextValue{Config: c})
}
// Extract config from context
func FromContext(ctx context.Context) (Config, error) {
c, ok := ctx.Value(configKey{}).(*contextValue)
if !ok {
return Config{}, fmt.Errorf("config not found in context")
}
return c.Config, nil
}