( config *cfg.Config, chainID string, dbProvider DBProvider, eventBus *types.EventBus, logger log.Logger, )
| 267 | } |
| 268 | |
| 269 | func createAndStartIndexerService( |
| 270 | config *cfg.Config, |
| 271 | chainID string, |
| 272 | dbProvider DBProvider, |
| 273 | eventBus *types.EventBus, |
| 274 | logger log.Logger, |
| 275 | ) (*txindex.IndexerService, txindex.TxIndexer, indexer.BlockIndexer, error) { |
| 276 | var ( |
| 277 | txIndexer txindex.TxIndexer |
| 278 | blockIndexer indexer.BlockIndexer |
| 279 | ) |
| 280 | |
| 281 | switch config.TxIndex.Indexer { |
| 282 | case "kv": |
| 283 | store, err := dbProvider(&DBContext{"tx_index", config}) |
| 284 | if err != nil { |
| 285 | return nil, nil, nil, err |
| 286 | } |
| 287 | |
| 288 | txIndexer = kv.NewTxIndex(store) |
| 289 | blockIndexer = blockidxkv.New(dbm.NewPrefixDB(store, []byte("block_events"))) |
| 290 | |
| 291 | case "psql": |
| 292 | if config.TxIndex.PsqlConn == "" { |
| 293 | return nil, nil, nil, errors.New(`no psql-conn is set for the "psql" indexer`) |
| 294 | } |
| 295 | es, err := psql.NewEventSink(config.TxIndex.PsqlConn, chainID) |
| 296 | if err != nil { |
| 297 | return nil, nil, nil, fmt.Errorf("creating psql indexer: %w", err) |
| 298 | } |
| 299 | txIndexer = es.TxIndexer() |
| 300 | blockIndexer = es.BlockIndexer() |
| 301 | |
| 302 | default: |
| 303 | txIndexer = &null.TxIndex{} |
| 304 | blockIndexer = &blockidxnull.BlockerIndexer{} |
| 305 | } |
| 306 | |
| 307 | indexerService := txindex.NewIndexerService(txIndexer, blockIndexer, eventBus, false) |
| 308 | indexerService.SetLogger(logger.With("module", "txindex")) |
| 309 | |
| 310 | if err := indexerService.Start(); err != nil { |
| 311 | return nil, nil, nil, err |
| 312 | } |
| 313 | |
| 314 | return indexerService, txIndexer, blockIndexer, nil |
| 315 | } |
| 316 | |
| 317 | func doHandshake( |
| 318 | stateStore sm.Store, |
no test coverage detected