Documentation
¶
Overview ¶
Example ¶
package main import ( "fmt" "github.com/adverax/fetchers/maps/maps" "time" ) type MyConfigAddress struct { Host string `json:"host"` Port int `json:"port"` } type MyConfig struct { Address MyConfigAddress `json:"address"` Name string `json:"name"` Interval time.Duration `json:"interval"` } func DefaultConfig() *MyConfig { return &MyConfig{ Address: MyConfigAddress{ Host: "unknown", Port: 80, }, Name: "unknown", } } func main() { // This example demonstrates how to use loader with migrations. // // First, create source: source := maps.Engine{ "address": map[string]interface{}{ "host": "google.com", "port": 90, }, "name": "My App", "interval": 10, } // Then create migrator: migrator := NewMigrator() migrator.Add( "1", func(data map[string]interface{}) error { if v, ok := data["interval"]; ok { data["interval"] = int64(time.Duration(v.(int)) * time.Second) } return nil }, ) // Then create loader: loader, err := NewBuilder(). WithSource(NewSourceWithMigration(source, migrator)). Build() if err != nil { panic(err) } // Then load configuration: config := DefaultConfig() err = loader.Load(config) if err != nil { panic(err) } // Now you can use config. // For example, print it: fmt.Println(*config) }
Output: {{google.com 90} My App 10s}
Index ¶
- Constants
- Variables
- func Assign(ctx context.Context, dst interface{}, src map[string]interface{}) error
- func Let(ctx context.Context, dst interface{}, src interface{}) error
- func RegisterHandler(tp reflect.Type, handler TypeHandler)
- type BaseConfig
- type Boolean
- type BooleanTypeHandler
- type Builder
- type Config
- type Converter
- type Duration
- type DurationTypeHandler
- type Fetcher
- type FileLoaderBuilder
- func (that *FileLoaderBuilder) Build() (*Loader, error)
- func (that *FileLoaderBuilder) WithConverter(converter Converter) *FileLoaderBuilder
- func (that *FileLoaderBuilder) WithFile(file string, mustExists bool) *FileLoaderBuilder
- func (that *FileLoaderBuilder) WithSource(sources ...Source) *FileLoaderBuilder
- func (that *FileLoaderBuilder) WithSourceBuilder(builder SourceBuilder) *FileLoaderBuilder
- type Float
- type FloatTypeHandler
- type Getter
- type Importer
- type Integer
- type IntegerTypeHandler
- type Letter
- type Loader
- type Migration
- type Migrator
- type Registry
- type Source
- type SourceBuilder
- type SourceMigrator
- type SourceWithMigration
- type String
- type StringTypeHandler
- type Strings
- type StringsTypeHandler
- type Time
- type TimeTypeHandler
- type TypeHandler
- type Writer
Examples ¶
Constants ¶
View Source
const MigrationKey = "migration"
Variables ¶
View Source
var ( ErrFieldFilesIsRequired = fmt.Errorf("Files are required") ErrFieldBuilderIsRequired = fmt.Errorf("Builder is required") ErrFieldConverterIsRequired = fmt.Errorf("Converter is required") )
View Source
var (
DefaultConverter = &defaultConverter{}
)
View Source
var (
ErrDistinct = fmt.Errorf("config without changes")
)
View Source
var (
ErrFieldSourcesIsRequired = fmt.Errorf("Field sources is required")
)
Functions ¶
func RegisterHandler ¶ added in v1.0.1
func RegisterHandler(tp reflect.Type, handler TypeHandler)
Types ¶
type BaseConfig ¶ added in v1.0.1
type BooleanTypeHandler ¶ added in v1.0.1
type BooleanTypeHandler struct { }
type Builder ¶
type Builder struct {
// contains filtered or unexported fields
}
func NewBuilder ¶
func NewBuilder() *Builder
func (*Builder) WithConverter ¶
func (*Builder) WithDistinct ¶ added in v1.0.1
func (*Builder) WithSource ¶
type DurationTypeHandler ¶ added in v1.0.1
type DurationTypeHandler struct { }
type FileLoaderBuilder ¶
type FileLoaderBuilder struct {
// contains filtered or unexported fields
}
func NewFileLoaderBuilder ¶
func NewFileLoaderBuilder() *FileLoaderBuilder
func (*FileLoaderBuilder) Build ¶
func (that *FileLoaderBuilder) Build() (*Loader, error)
func (*FileLoaderBuilder) WithConverter ¶
func (that *FileLoaderBuilder) WithConverter(converter Converter) *FileLoaderBuilder
func (*FileLoaderBuilder) WithFile ¶
func (that *FileLoaderBuilder) WithFile(file string, mustExists bool) *FileLoaderBuilder
func (*FileLoaderBuilder) WithSource ¶
func (that *FileLoaderBuilder) WithSource(sources ...Source) *FileLoaderBuilder
func (*FileLoaderBuilder) WithSourceBuilder ¶
func (that *FileLoaderBuilder) WithSourceBuilder(builder SourceBuilder) *FileLoaderBuilder
type FloatTypeHandler ¶ added in v1.0.1
type FloatTypeHandler struct { }
type IntegerTypeHandler ¶ added in v1.0.1
type IntegerTypeHandler struct { }
type Migrator ¶ added in v1.0.1
type Migrator struct {
// contains filtered or unexported fields
}
func NewMigrator ¶ added in v1.0.1
func NewMigrator() *Migrator
type Registry ¶ added in v1.0.1
type Registry struct {
// contains filtered or unexported fields
}
func NewRegistry ¶ added in v1.0.1
func NewRegistry() *Registry
type SourceBuilder ¶
type SourceMigrator ¶ added in v1.0.1
type SourceWithMigration ¶ added in v1.0.1
type SourceWithMigration struct {
// contains filtered or unexported fields
}
func NewSourceWithMigration ¶ added in v1.0.1
func NewSourceWithMigration(source Source, migrator SourceMigrator) *SourceWithMigration
func (*SourceWithMigration) Fetch ¶ added in v1.0.1
func (that *SourceWithMigration) Fetch() (map[string]interface{}, error)
type StringTypeHandler ¶ added in v1.0.1
type StringTypeHandler struct { }
type StringsTypeHandler ¶ added in v1.0.1
type StringsTypeHandler struct { }
type TimeTypeHandler ¶ added in v1.0.1
type TimeTypeHandler struct { }
type TypeHandler ¶ added in v1.0.1
func HandlerOf ¶ added in v1.0.1
func HandlerOf(tp reflect.Type) TypeHandler
Source Files
¶
Click to show internal directories.
Click to hide internal directories.