Skip to content

Latest commit

 

History

History

listener

Listener

logo.png

sequenceDiagram
    participant User
    participant EthereumNode
    participant SQLiteDB
    participant Listener

    User->>Listener: Start Listener
    Listener->>SQLiteDB: Connect and Migrate Models
    Listener->>EthereumNode: Connect to Ethereum Node
    Listener->>EthereumNode: Retrieve Latest Block
    Listener->>Listener: Listen for Logs
    Listener->>User: Process Log
Loading

Using Listener DB

There is a simple example here.

Migrating to ListenerDB

This guide outlines the steps to migrate your service to use the new ListenerDB interface. Follow these steps for each service that needs to be updated.

1. Remove Deprecated Methods

Delete any deprecated methods that are no longer needed with ListenerDB.

2. Update Interface Definitions

Add the ListenerDB interface to your Service interface:

type Service interface {
    Reader
    Writer
    SubmitterDB() submitterDB.Service
    listenerDB.ChainListenerDB
}

3. Update GetAllModels Function

Modify the GetAllModels function to include ListenerDB models:

func GetAllModels() (allModels []interface{}) {
    allModels = append(txdb.GetAllModels(), &YourModel{})
    allModels = append(allModels, listenerDB.GetAllModels()...)
    return allModels
}

4. Implement ListenerDB in Store

Update your Store struct and NewStore function:

type Store struct {
    db             *gorm.DB
    submitterStore submitterDB.Service
    listenerDB.ChainListenerDB
}

func NewStore(db *gorm.DB, metrics metrics.Handler) *Store {
    txDB := txdb.NewTXStore(db, metrics)
    listener := listenerDB.NewChainListenerStore(db, metrics)

    return &Store{
        db:              db,
        submitterStore:  txDB,
        ChainListenerDB: listener,
    }
}

6. Refactor Usage

Replace all calls to the removed methods with the appropriate methods from the ChainListenerDB interface.

7. Testing

After making these changes, thoroughly test your service to ensure all functionality works as expected with the new ListenerDB implementation.

By following these steps, you should successfully migrate your service to use the new ListenerDB interface. Remember to replace YourModel with the actual model name in your implementation. If you encounter any issues or need further clarification, please refer to the ListenerDB documentation or consult with your team.