101 lines
2.1 KiB
Go
101 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"flag"
|
|
"log/slog"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/grassrootseconomics/eth-indexer/internal/store"
|
|
"github.com/grassrootseconomics/eth-indexer/internal/util"
|
|
"github.com/grassrootseconomics/ethutils"
|
|
"github.com/jackc/pgx/v5/pgxpool"
|
|
"github.com/knadh/koanf/v2"
|
|
"github.com/lmittmann/w3"
|
|
)
|
|
|
|
const (
|
|
insertOwnerQuery = `INSERT INTO ownership_change(
|
|
new_owner
|
|
contract_address
|
|
) VALUES ($1, $2) ON CONFLICT DO NOTHING`
|
|
|
|
getTokens = `SELECT contract_address FROM tokens`
|
|
|
|
getPools = `SELECT contract_address FROM pools`
|
|
)
|
|
|
|
var (
|
|
build = "dev"
|
|
|
|
confFlag string
|
|
migrationsFolderFlag string
|
|
queriesFlag string
|
|
|
|
lo *slog.Logger
|
|
ko *koanf.Koanf
|
|
|
|
dbPool *pgxpool.Pool
|
|
)
|
|
|
|
func init() {
|
|
flag.StringVar(&confFlag, "config", "config.toml", "Config file location")
|
|
flag.StringVar(&migrationsFolderFlag, "migrations", "migrations/", "Migrations folder location")
|
|
flag.StringVar(&queriesFlag, "queries", "queries.sql", "Queries file location")
|
|
flag.Parse()
|
|
|
|
lo = util.InitLogger()
|
|
ko = util.InitConfig(lo, confFlag)
|
|
|
|
lo.Info("starting owners bootstrapper", "build", build)
|
|
}
|
|
|
|
func main() {
|
|
var ownerGetter = w3.MustNewFunc("owner()", "address")
|
|
|
|
chainProvider := ethutils.NewProvider(ko.MustString("chain.rpc_endpoint"), ko.MustInt64("chain.chainid"))
|
|
|
|
var err error
|
|
dbPool, err = newPgStore()
|
|
if err != nil {
|
|
lo.Error("could not initialize postgres store", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Minute*5)
|
|
defer cancel()
|
|
|
|
// TODO: get all tokens and pools
|
|
|
|
}
|
|
|
|
func newPgStore() (*pgxpool.Pool, error) {
|
|
store, err := store.NewPgStore(store.PgOpts{
|
|
Logg: lo,
|
|
DSN: ko.MustString("postgres.dsn"),
|
|
MigrationsFolderPath: migrationsFolderFlag,
|
|
QueriesFolderPath: queriesFlag,
|
|
})
|
|
if err != nil {
|
|
lo.Error("could not initialize postgres store", "error", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
return store.Pool(), nil
|
|
}
|
|
|
|
func insertOwnershipChange(ctx context.Context, owner string, contractAddress string) error {
|
|
_, err := dbPool.Exec(
|
|
ctx,
|
|
insertOwnerQuery,
|
|
owner,
|
|
contractAddress,
|
|
)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|