mirror of
https://github.com/GrassrootsEconomics/cic-dw.git
synced 2026-05-17 03:45:21 +02:00
add: (feat) balances query api
- add address utils - return uint64 for balances instead of float
This commit is contained in:
46
cmd/init.go
46
cmd/init.go
@@ -3,8 +3,13 @@ package main
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"strings"
|
||||
|
||||
batch_balance "github.com/grassrootseconomics/cic-go/batch_balance"
|
||||
cic_net "github.com/grassrootseconomics/cic-go/net"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/grassrootseconomics/cic-go/provider"
|
||||
"github.com/hibiken/asynq"
|
||||
"github.com/jackc/pgx/v4/pgxpool"
|
||||
"github.com/knadh/koanf"
|
||||
@@ -12,7 +17,6 @@ import (
|
||||
"github.com/knadh/koanf/providers/env"
|
||||
"github.com/knadh/koanf/providers/file"
|
||||
"github.com/nleof/goyesql"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type config struct {
|
||||
@@ -25,8 +29,9 @@ type config struct {
|
||||
Cors []string `koanf:"cors"`
|
||||
}
|
||||
Chain struct {
|
||||
RpcProvider string `koanf:"rpc"`
|
||||
TokenRegistry string `koanf:"index"`
|
||||
RpcProvider string `koanf:"rpc"`
|
||||
TokenRegistry string `koanf:"index"`
|
||||
BalanceResolver string `koanf:"balances_resolver"`
|
||||
}
|
||||
Syncers map[string]string `koanf:"syncers"`
|
||||
}
|
||||
@@ -67,16 +72,28 @@ func connectDb(dsn string) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func parseRedis(dsn string) (asynq.RedisConnOpt, error) {
|
||||
rconn, err := asynq.ParseRedisURI(dsn)
|
||||
func parseRedis(dsn string) error {
|
||||
var err error
|
||||
rClient, err = asynq.ParseRedisURI(dsn)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
|
||||
return rconn, nil
|
||||
return nil
|
||||
}
|
||||
|
||||
func connectCicNet(rpcProvider string, tokenIndex common.Address) error {
|
||||
func loadProvider(rpcEndpoint string) error {
|
||||
var err error
|
||||
|
||||
rpcProvider, err = provider.NewRpcProvider(rpcEndpoint)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func loadCicNet(tokenIndex common.Address) error {
|
||||
var err error
|
||||
|
||||
cicnetClient, err = cic_net.NewCicNet(rpcProvider, tokenIndex)
|
||||
@@ -87,6 +104,17 @@ func connectCicNet(rpcProvider string, tokenIndex common.Address) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func loadBatchBalance(balanceResolver common.Address) error {
|
||||
var err error
|
||||
|
||||
batchBalance, err = batch_balance.NewBatchBalance(rpcProvider, balanceResolver)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func loadQueries(sqlFilesPath string) error {
|
||||
coreQueries, err := goyesql.ParseFile(fmt.Sprintf("%s/core.sql", sqlFilesPath))
|
||||
if err != nil {
|
||||
|
||||
35
cmd/main.go
35
cmd/main.go
@@ -2,17 +2,21 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
batch_balance "github.com/grassrootseconomics/cic-go/batch_balance"
|
||||
cic_net "github.com/grassrootseconomics/cic-go/net"
|
||||
"github.com/grassrootseconomics/cic-go/provider"
|
||||
"github.com/hibiken/asynq"
|
||||
"github.com/jackc/pgx/v4/pgxpool"
|
||||
"github.com/knadh/koanf"
|
||||
"github.com/lmittmann/w3"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"golang.org/x/sys/unix"
|
||||
"os"
|
||||
"os/signal"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -21,7 +25,10 @@ var (
|
||||
preparedQueries *queries
|
||||
conf config
|
||||
db *pgxpool.Pool
|
||||
rpcProvider *provider.Provider
|
||||
cicnetClient *cic_net.CicNet
|
||||
batchBalance *batch_balance.BatchBalance
|
||||
rClient asynq.RedisConnOpt
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -39,17 +46,25 @@ func init() {
|
||||
log.Fatal().Err(err).Msg("failed to connect to postgres")
|
||||
}
|
||||
|
||||
if err := connectCicNet(conf.Chain.RpcProvider, w3.A(conf.Chain.TokenRegistry)); err != nil {
|
||||
if err := loadProvider(conf.Chain.RpcProvider); err != nil {
|
||||
log.Fatal().Err(err).Msg("failed to connect to postgres")
|
||||
}
|
||||
|
||||
if err := loadCicNet(w3.A(conf.Chain.TokenRegistry)); err != nil {
|
||||
log.Fatal().Err(err).Msg("failed to connect to postgres")
|
||||
}
|
||||
|
||||
if err := loadBatchBalance(w3.A(conf.Chain.BalanceResolver)); err != nil {
|
||||
log.Fatal().Err(err).Msg("failed to connect to postgres")
|
||||
}
|
||||
|
||||
if err := parseRedis(conf.Db.Redis); err != nil {
|
||||
|
||||
log.Fatal().Err(err).Msg("could not parse redis connection string")
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
rClient, err := parseRedis(conf.Db.Redis)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("could not parse redis connection string")
|
||||
}
|
||||
|
||||
scheduler, err := bootstrapScheduler(rClient)
|
||||
if err != nil {
|
||||
log.Fatal().Err(err).Msg("could not bootstrap scheduler")
|
||||
|
||||
@@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"cic-dw/internal/dashboard"
|
||||
"cic-dw/internal/public"
|
||||
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/labstack/echo/v4/middleware"
|
||||
)
|
||||
@@ -19,7 +20,7 @@ func initHTTPServer() *echo.Echo {
|
||||
}))
|
||||
|
||||
dashboard.InitDashboardApi(server, db, preparedQueries.dashboard)
|
||||
public.InitPublicApi(server, db, preparedQueries.public)
|
||||
public.InitPublicApi(server, db, batchBalance, preparedQueries.public)
|
||||
|
||||
return server
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"cic-dw/internal/syncer"
|
||||
|
||||
"github.com/hibiken/asynq"
|
||||
"github.com/rs/zerolog/log"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user