/
setup.go
65 lines (53 loc) · 1.96 KB
/
setup.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
package block
import (
"fmt"
"github.com/forbole/soljuno/db"
client "github.com/forbole/soljuno/solana/client"
"github.com/forbole/soljuno/types/pool"
"github.com/forbole/soljuno/modules"
modsregistrar "github.com/forbole/soljuno/modules/registrar"
"github.com/forbole/soljuno/types"
)
// GetFixContext setups all the things that should be later passed in order
// to fix the chain data of missing blocks properly.
func GetFixContext(config Config) (*Context, error) {
// Get the global config
cfg := types.Cfg
// Get the database
databaseCtx := db.NewContext(cfg.GetDatabaseConfig(), config.GetLogger())
database, err := config.GetDBBuilder()(databaseCtx)
if err != nil {
return nil, err
}
// Init the client
cp := client.NewClientProxy(cfg.GetRPCConfig().GetAddress())
pool, err := pool.NewDefaultPool(cfg.GetWorkerConfig().GetPoolSize())
if err != nil {
return nil, err
}
// Setup the logging
err = config.GetLogger().SetLogFormat(cfg.GetLoggingConfig().GetLogFormat())
if err != nil {
return nil, fmt.Errorf("error while setting logging format: %s", err)
}
err = config.GetLogger().SetLogLevel(cfg.GetLoggingConfig().GetLogLevel())
if err != nil {
return nil, fmt.Errorf("error while setting logging level: %s", err)
}
// Create a queue that will collect, aggregate, and export blocks and metadata
slotQueue := types.NewQueue(25)
// Get the modules
context := modsregistrar.NewContext(cfg, database, cp, config.GetLogger(), pool, slotQueue)
mods := config.GetRegistrar().BuildModules(context)
registeredModules := modsregistrar.GetModules(mods, cfg.GetChainConfig().GetModules(), config.GetLogger())
// Run all the additional operations
for _, module := range registeredModules {
if module, ok := module.(modules.AdditionalOperationsModule); ok {
err := module.RunAdditionalOperations()
if err != nil {
return nil, err
}
}
}
return NewContext(cfg, cp, database, config.GetLogger(), registeredModules, pool, slotQueue), nil
}