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 }