/
types.go
139 lines (119 loc) · 3.83 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package parse
import (
"github.com/cosmos/cosmos-sdk/simapp"
"github.com/cosmos/cosmos-sdk/simapp/params"
"github.com/desmos-labs/juno/types/logging"
"github.com/desmos-labs/juno/client"
"github.com/desmos-labs/juno/db"
"github.com/desmos-labs/juno/db/builder"
"github.com/desmos-labs/juno/modules"
"github.com/desmos-labs/juno/modules/registrar"
"github.com/desmos-labs/juno/types"
)
// Config contains all the configuration for the "parse" command
type Config struct {
registrar registrar.Registrar
configParser types.ConfigParser
encodingConfigBuilder types.EncodingConfigBuilder
setupCfg types.SdkConfigSetup
buildDb db.Builder
logger logging.Logger
}
// NewConfig allows to build a new Config instance
func NewConfig() *Config {
return &Config{}
}
// WithRegistrar sets the modules registrar to be used
func (config *Config) WithRegistrar(r registrar.Registrar) *Config {
config.registrar = r
return config
}
// GetRegistrar returns the modules registrar to be used
func (config *Config) GetRegistrar() registrar.Registrar {
if config.registrar == nil {
return ®istrar.EmptyRegistrar{}
}
return config.registrar
}
// WithConfigParser sets the configuration parser to be used
func (config *Config) WithConfigParser(p types.ConfigParser) *Config {
config.configParser = p
return config
}
// GetConfigParser returns the configuration parser to be used
func (config *Config) GetConfigParser() types.ConfigParser {
if config.configParser == nil {
return types.DefaultConfigParser
}
return config.configParser
}
// WithEncodingConfigBuilder sets the configurations builder to be used
func (config *Config) WithEncodingConfigBuilder(b types.EncodingConfigBuilder) *Config {
config.encodingConfigBuilder = b
return config
}
// GetEncodingConfigBuilder returns the encoding config builder to be used
func (config *Config) GetEncodingConfigBuilder() types.EncodingConfigBuilder {
if config.encodingConfigBuilder == nil {
return simapp.MakeTestEncodingConfig
}
return config.encodingConfigBuilder
}
// WithSetupConfig sets the SDK setup configurator to be used
func (config *Config) WithSetupConfig(s types.SdkConfigSetup) *Config {
config.setupCfg = s
return config
}
// GetSetupConfig returns the SDK configuration builder to use
func (config *Config) GetSetupConfig() types.SdkConfigSetup {
if config.setupCfg == nil {
return types.DefaultConfigSetup
}
return config.setupCfg
}
// WithDBBuilder sets the database builder to be used
func (config *Config) WithDBBuilder(b db.Builder) *Config {
config.buildDb = b
return config
}
// GetDBBuilder returns the database builder to be used
func (config *Config) GetDBBuilder() db.Builder {
if config.buildDb == nil {
return builder.Builder
}
return config.buildDb
}
// WithLogger sets the logger to be used while parsing the data
func (config *Config) WithLogger(logger logging.Logger) *Config {
config.logger = logger
return config
}
// GetLogger returns the logger to be used when parsing the data
func (config *Config) GetLogger() logging.Logger {
if config.logger == nil {
return logging.DefaultLogger()
}
return config.logger
}
// --------------------------------------------------------------------------------------------------------------------
// Context contains the parsing context
type Context struct {
EncodingConfig *params.EncodingConfig
Proxy *client.Proxy
Database db.Database
Logger logging.Logger
Modules []modules.Module
}
// NewContext builds a new Context instance
func NewContext(
encodingConfig *params.EncodingConfig, proxy *client.Proxy, db db.Database,
logger logging.Logger, modules []modules.Module,
) *Context {
return &Context{
EncodingConfig: encodingConfig,
Proxy: proxy,
Database: db,
Modules: modules,
Logger: logger,
}
}