@@ -16,6 +16,7 @@ import (
16
16
reflectionv1 "cosmossdk.io/api/cosmos/reflection/v1"
17
17
appmodulev2 "cosmossdk.io/core/appmodule/v2"
18
18
"cosmossdk.io/core/comet"
19
+ "cosmossdk.io/core/event"
19
20
"cosmossdk.io/core/header"
20
21
"cosmossdk.io/core/registry"
21
22
"cosmossdk.io/core/server"
@@ -26,6 +27,7 @@ import (
26
27
"cosmossdk.io/log"
27
28
"cosmossdk.io/runtime/v2/services"
28
29
"cosmossdk.io/server/v2/stf"
30
+ rootstore "cosmossdk.io/store/v2/root"
29
31
)
30
32
31
33
var (
@@ -40,19 +42,19 @@ type appModule[T transaction.Tx] struct {
40
42
func (m appModule [T ]) IsOnePerModuleType () {}
41
43
func (m appModule [T ]) IsAppModule () {}
42
44
43
- func (m appModule [T ]) RegisterServices (registar grpc.ServiceRegistrar ) error {
45
+ func (m appModule [T ]) RegisterServices (registrar grpc.ServiceRegistrar ) error {
44
46
autoCliQueryService , err := services .NewAutoCLIQueryService (m .app .moduleManager .modules )
45
47
if err != nil {
46
48
return err
47
49
}
48
50
49
- autocliv1 .RegisterQueryServer (registar , autoCliQueryService )
51
+ autocliv1 .RegisterQueryServer (registrar , autoCliQueryService )
50
52
51
53
reflectionSvc , err := services .NewReflectionService ()
52
54
if err != nil {
53
55
return err
54
56
}
55
- reflectionv1 .RegisterReflectionServiceServer (registar , reflectionSvc )
57
+ reflectionv1 .RegisterReflectionServiceServer (registrar , reflectionSvc )
56
58
57
59
return nil
58
60
}
@@ -97,6 +99,7 @@ func init() {
97
99
ProvideAppBuilder [transaction .Tx ],
98
100
ProvideEnvironment [transaction .Tx ],
99
101
ProvideModuleManager [transaction .Tx ],
102
+ ProvideStoreBuilder ,
100
103
),
101
104
appconfig .Invoke (SetupAppBuilder ),
102
105
)
@@ -146,7 +149,12 @@ type AppInputs struct {
146
149
InterfaceRegistrar registry.InterfaceRegistrar
147
150
LegacyAmino registry.AminoRegistrar
148
151
Logger log.Logger
149
- DynamicConfig server.DynamicConfig `optional:"true"` // can be nil in client wiring
152
+ // StoreBuilder is a builder for a store/v2 RootStore satisfying the Store interface
153
+ StoreBuilder * StoreBuilder
154
+ // StoreOptions are required as input for the StoreBuilder. If not provided, the default options are used.
155
+ StoreOptions * rootstore.Options `optional:"true"`
156
+ // DynamicConfig can be nil in client wiring, but is required in server wiring.
157
+ DynamicConfig server.DynamicConfig `optional:"true"`
150
158
}
151
159
152
160
func SetupAppBuilder (inputs AppInputs ) {
@@ -157,8 +165,22 @@ func SetupAppBuilder(inputs AppInputs) {
157
165
app .moduleManager .RegisterInterfaces (inputs .InterfaceRegistrar )
158
166
app .moduleManager .RegisterLegacyAminoCodec (inputs .LegacyAmino )
159
167
160
- if inputs .DynamicConfig != nil {
161
- inputs .AppBuilder .config = inputs .DynamicConfig
168
+ if inputs .DynamicConfig == nil {
169
+ return
170
+ }
171
+ storeOptions := rootstore .DefaultStoreOptions ()
172
+ if inputs .StoreOptions != nil {
173
+ storeOptions = * inputs .StoreOptions
174
+ }
175
+ var err error
176
+ app .db , err = inputs .StoreBuilder .Build (
177
+ inputs .Logger ,
178
+ app .storeKeys ,
179
+ inputs .DynamicConfig ,
180
+ storeOptions ,
181
+ )
182
+ if err != nil {
183
+ panic (err )
162
184
}
163
185
}
164
186
@@ -178,6 +200,7 @@ func ProvideEnvironment[T transaction.Tx](
178
200
appBuilder * AppBuilder [T ],
179
201
kvFactory store.KVStoreServiceFactory ,
180
202
headerService header.Service ,
203
+ eventService event.Service ,
181
204
) (
182
205
appmodulev2.Environment ,
183
206
store.KVStoreService ,
@@ -209,7 +232,7 @@ func ProvideEnvironment[T transaction.Tx](
209
232
env := appmodulev2.Environment {
210
233
Logger : logger ,
211
234
BranchService : stf.BranchService {},
212
- EventService : stf . NewEventService () ,
235
+ EventService : eventService ,
213
236
GasService : stf .NewGasMeterService (),
214
237
HeaderService : headerService ,
215
238
QueryRouterService : stf .NewQueryRouterService (),
@@ -254,10 +277,12 @@ func DefaultServiceBindings() depinject.Config {
254
277
}
255
278
headerService header.Service = services .NewGenesisHeaderService (stf.HeaderService {})
256
279
cometService comet.Service = & services.ContextAwareCometInfoService {}
280
+ eventService = stf .NewEventService ()
257
281
)
258
282
return depinject .Supply (
259
283
kvServiceFactory ,
260
284
headerService ,
261
285
cometService ,
286
+ eventService ,
262
287
)
263
288
}
0 commit comments