-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathindexer.go
93 lines (79 loc) · 2.56 KB
/
indexer.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
package app
import (
storetypes "cosmossdk.io/store/types"
dbm "github.com/cosmos/cosmos-db"
servertypes "github.com/cosmos/cosmos-sdk/server/types"
// kvindexer
kvindexer "github.com/initia-labs/kvindexer"
kvindexerconfig "github.com/initia-labs/kvindexer/config"
blocksubmodule "github.com/initia-labs/kvindexer/submodules/block"
tx "github.com/initia-labs/kvindexer/submodules/tx"
nft "github.com/initia-labs/kvindexer/submodules/wasm-nft"
pair "github.com/initia-labs/kvindexer/submodules/wasm-pair"
kvindexermodule "github.com/initia-labs/kvindexer/x/kvindexer"
kvindexerkeeper "github.com/initia-labs/kvindexer/x/kvindexer/keeper"
)
func setupIndexer(
app *MinitiaApp,
appOpts servertypes.AppOptions,
kvindexerDB dbm.DB,
) (*kvindexerkeeper.Keeper, *kvindexermodule.AppModuleBasic, *storetypes.StreamingManager, error) {
// initialize the indexer keeper
kvindexerConfig, err := kvindexerconfig.NewConfig(appOpts)
if err != nil {
return nil, nil, nil, err
}
kvIndexerKeeper := kvindexerkeeper.NewKeeper(
app.appCodec,
"wasm",
kvindexerDB,
kvindexerConfig,
app.ac,
app.vc,
)
smBlock, err := blocksubmodule.NewBlockSubmodule(app.appCodec, kvIndexerKeeper, app.OPChildKeeper)
if err != nil {
return nil, nil, nil, err
}
smTx, err := tx.NewTxSubmodule(app.appCodec, kvIndexerKeeper)
if err != nil {
return nil, nil, nil, err
}
smPair, err := pair.NewPairSubmodule(app.appCodec, kvIndexerKeeper, app.IBCKeeper.ChannelKeeper, app.TransferKeeper)
if err != nil {
return nil, nil, nil, err
}
smNft, err := nft.NewWasmNFTSubmodule(app.ac, app.appCodec, kvIndexerKeeper, app.WasmKeeper, smPair)
if err != nil {
return nil, nil, nil, err
}
err = kvIndexerKeeper.RegisterSubmodules(smBlock, smTx, smPair, smNft)
if err != nil {
return nil, nil, nil, err
}
// Add your implementation here
kvIndexer, err := kvindexer.NewIndexer(app.GetBaseApp().Logger(), kvIndexerKeeper)
if err != nil {
return nil, nil, nil, err
} else if kvIndexer == nil {
return nil, nil, nil, nil
}
if err = kvIndexer.Validate(); err != nil {
return nil, nil, nil, err
}
if err = kvIndexer.Prepare(nil); err != nil {
return nil, nil, nil, err
}
if err = kvIndexerKeeper.Seal(); err != nil {
return nil, nil, nil, err
}
if err = kvIndexer.Start(nil); err != nil {
return nil, nil, nil, err
}
kvIndexerModule := kvindexermodule.NewAppModuleBasic(kvIndexerKeeper)
streamingManager := storetypes.StreamingManager{
ABCIListeners: []storetypes.ABCIListener{kvIndexer},
StopNodeOnErr: true,
}
return kvIndexerKeeper, &kvIndexerModule, &streamingManager, nil
}