github.com/diadata-org/diadata@v1.4.593/pkg/model/blockscrapers.go (about)

     1  package models
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/diadata-org/diadata/pkg/dia"
     8  )
     9  
    10  // SetBlockData stores @blockdata in postgres.
    11  func (rdb *RelDB) SetBlockData(blockdata dia.BlockData) error {
    12  	query := fmt.Sprintf("insert into %s (blockchain,block_number,block_data) values ($1,$2,$3)", blockdataTable)
    13  	_, err := rdb.postgresClient.Exec(context.Background(), query, blockdata.BlockchainName, blockdata.BlockNumber, blockdata.Data)
    14  	if err != nil {
    15  		return err
    16  	}
    17  	return nil
    18  }
    19  
    20  // GetBlockData returns information on the block with @blocknumber on @blockchain.
    21  func (rdb *RelDB) GetBlockData(blockchain string, blocknumber int64) (dia.BlockData, error) {
    22  	var blockdata dia.BlockData
    23  
    24  	query := fmt.Sprintf("select block_data from %s where blockchain=$1 and block_number=$2", blockdataTable)
    25  
    26  	err := rdb.postgresClient.QueryRow(context.Background(), query, blockchain, blocknumber).Scan(
    27  		&blockdata.Data,
    28  	)
    29  	if err != nil {
    30  		return blockdata, err
    31  	}
    32  	blockdata.BlockchainName = blockchain
    33  	blockdata.BlockNumber = blocknumber
    34  	return blockdata, nil
    35  }
    36  
    37  // GetLastBlockBlockscraper returns the last scraped block on @blockchain for block data scrapers.
    38  func (rdb *RelDB) GetLastBlockBlockscraper(blockchain string) (blockNumber int64, err error) {
    39  	query := fmt.Sprintf("select block_number from %s where blockchain=$1 order by block_number desc limit 1", blockdataTable)
    40  	err = rdb.postgresClient.QueryRow(context.Background(), query, blockchain).Scan(
    41  		&blockNumber,
    42  	)
    43  	if err != nil {
    44  		return
    45  	}
    46  	return
    47  }