-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
58 changed files
with
2,594 additions
and
671 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
56 changes: 56 additions & 0 deletions
56
.yarn/patches/@gnolang-tm2-js-client-npm-1.0.1-9e54bafbb3.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
diff --git a/bin/provider/jsonrpc/jsonrpc.d.ts b/bin/provider/jsonrpc/jsonrpc.d.ts | ||
index 434273193c4f38a5eefaa9d43b3114bc44e5fd0e..69f2922f8fd30cd56021db887619fab0f012935c 100644 | ||
--- a/bin/provider/jsonrpc/jsonrpc.d.ts | ||
+++ b/bin/provider/jsonrpc/jsonrpc.d.ts | ||
@@ -23,5 +23,5 @@ export declare class JSONRPCProvider implements Provider { | ||
getAccountNumber(address: string, height?: number): Promise<number>; | ||
getStatus(): Promise<Status>; | ||
sendTransaction(tx: string): Promise<string>; | ||
- waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<Tx>; | ||
+ waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<{tx: Tx, height: number, index: number}>; | ||
} | ||
diff --git a/bin/provider/provider.d.ts b/bin/provider/provider.d.ts | ||
index a5b37aacb3b9c47bec2a4bc6fe1bb7f653656ee5..d9aa2d8a703c9c40d58695643e3718b2c82aaf5a 100644 | ||
--- a/bin/provider/provider.d.ts | ||
+++ b/bin/provider/provider.d.ts | ||
@@ -82,5 +82,5 @@ export interface Provider { | ||
* @param {number} [fromHeight=latest] The block height used to begin the search | ||
* @param {number} [timeout=15000] Optional wait timeout in MS | ||
*/ | ||
- waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<Tx>; | ||
+ waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<{tx: Tx, height: number, index: number}>; | ||
} | ||
diff --git a/bin/provider/utility/provider.utility.d.ts b/bin/provider/utility/provider.utility.d.ts | ||
index d476e4ef17146c3001ac538699dc6dd5ee1256e0..16a444812443399344d250d6e66a49eed23eff94 100644 | ||
--- a/bin/provider/utility/provider.utility.d.ts | ||
+++ b/bin/provider/utility/provider.utility.d.ts | ||
@@ -25,4 +25,4 @@ export declare const extractAccountNumberFromResponse: (abciData: string | null) | ||
* @param {number} [fromHeight=latest] the starting height for the search. If omitted, it is the latest block in the chain | ||
* @param {number} [timeout=15000] the timeout in MS for the search | ||
*/ | ||
-export declare const waitForTransaction: (provider: Provider, hash: string, fromHeight?: number, timeout?: number) => Promise<Tx>; | ||
+export declare const waitForTransaction: (provider: Provider, hash: string, fromHeight?: number, timeout?: number) => Promise<{tx: Tx, height: number, index: number}>; | ||
diff --git a/bin/provider/utility/provider.utility.js b/bin/provider/utility/provider.utility.js | ||
index 82a13a73ec49ed3970dc0567bac5b4bfc4fa8c41..b860d1d4d4d45dd24073a3a3aba665be5bc35690 100644 | ||
--- a/bin/provider/utility/provider.utility.js | ||
+++ b/bin/provider/utility/provider.utility.js | ||
@@ -167,7 +167,7 @@ var waitForTransaction = function (provider, hash, fromHeight, timeout) { return | ||
// Clear the interval | ||
clearInterval(fetchInterval); | ||
// Decode the transaction from amino | ||
- resolve(proto_1.Tx.decode(txRaw)); | ||
+ resolve({tx: proto_1.Tx.decode(txRaw), height: parseInt(block.block.header.height, 10), index: _i}); | ||
} | ||
} | ||
_b.label = 4; | ||
diff --git a/bin/provider/websocket/ws.d.ts b/bin/provider/websocket/ws.d.ts | ||
index a373b6af1d5cb158d4c129199e565b9fe16f5548..05e8cc7c9a7fd7d89154a1f4a0441f1133ff742f 100644 | ||
--- a/bin/provider/websocket/ws.d.ts | ||
+++ b/bin/provider/websocket/ws.d.ts | ||
@@ -51,5 +51,5 @@ export declare class WSProvider implements Provider { | ||
getAccountNumber(address: string, height?: number): Promise<number>; | ||
getStatus(): Promise<Status>; | ||
sendTransaction(tx: string): Promise<string>; | ||
- waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<Tx>; | ||
+ waitForTransaction(hash: string, fromHeight?: number, timeout?: number): Promise<{tx: Tx, height: number, index: number}>; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
package main | ||
|
||
import ( | ||
"flag" | ||
"fmt" | ||
"io/ioutil" | ||
"net/http" | ||
"os" | ||
"regexp" | ||
"time" | ||
|
||
"github.com/TERITORI/teritori-dapp/go/internal/indexerdb" | ||
"github.com/TERITORI/teritori-dapp/go/pkg/networks" | ||
"github.com/go-co-op/gocron" | ||
"github.com/peterbourgon/ff/v3" | ||
"github.com/pkg/errors" | ||
"go.uber.org/zap" | ||
) | ||
|
||
var nameRegexp = regexp.MustCompile(` * \[(.+)\]\(/r/demo/users\:`) | ||
|
||
func main() { | ||
// handle args | ||
fs := flag.NewFlagSet("teritori-indexer", flag.ContinueOnError) | ||
var ( | ||
dbHost = fs.String("db-indexer-host", "", "host postgreSQL database") | ||
dbPort = fs.String("db-indexer-port", "", "port for postgreSQL database") | ||
dbPass = fs.String("postgres-password", "", "password for postgreSQL database") | ||
dbName = fs.String("database-name", "", "database name for postgreSQL") | ||
dbUser = fs.String("postgres-user", "", "username for postgreSQL") | ||
networksFile = fs.String("networks-file", "networks.json", "path to networks config file") | ||
networkID = fs.String("gno-network-id", "gno-teritori", "network id to index") | ||
) | ||
if err := ff.Parse(fs, os.Args[1:], | ||
ff.WithEnvVars(), | ||
ff.WithIgnoreUndefined(true), | ||
ff.WithConfigFile(".env"), | ||
ff.WithConfigFileParser(ff.EnvParser), | ||
ff.WithAllowMissingConfigFile(true), | ||
); err != nil { | ||
panic(errors.Wrap(err, "failed to parse flags")) | ||
} | ||
|
||
logger, err := zap.NewDevelopment() | ||
if err != nil { | ||
panic(err) | ||
} | ||
|
||
// load networks | ||
networksBytes, err := os.ReadFile(*networksFile) | ||
if err != nil { | ||
panic(errors.Wrap(err, "failed to read networks config file")) | ||
} | ||
netstore, err := networks.UnmarshalNetworkStore(networksBytes) | ||
if err != nil { | ||
panic(errors.Wrap(err, "failed to unmarshal networks config")) | ||
} | ||
|
||
// get and validate selected network | ||
network := netstore.MustGetGnoNetwork(*networkID) | ||
if network.ChainID == "" { | ||
panic(errors.New("missing chainId in network config")) | ||
} | ||
if network.NameServiceContractAddress == "" { | ||
panic(errors.New("missing nameServiceContractAddress in network config")) | ||
} | ||
|
||
dataConnexion := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s", | ||
*dbHost, *dbUser, *dbPass, *dbName, *dbPort) | ||
db, err := indexerdb.NewPostgresDB(dataConnexion) | ||
|
||
if err != nil { | ||
panic(errors.Wrap(err, "failed to access db")) | ||
} | ||
err = indexerdb.MigrateDB(db) | ||
if err != nil { | ||
panic(errors.Wrap(err, "failed migrate database models")) | ||
} | ||
|
||
schedule := gocron.NewScheduler(time.UTC) | ||
schedule.Every(2).Minutes().Do(func() { | ||
logger.Info("indexing") | ||
resp, err := http.Get(network.GnowebURL + "/r/demo/users") | ||
if err != nil { | ||
logger.Error("failed to get names list", zap.Error(err)) | ||
return | ||
} | ||
data, err := ioutil.ReadAll(resp.Body) | ||
if err != nil { | ||
logger.Error("failed to read response body", zap.Error(err)) | ||
return | ||
} | ||
render := string(data) | ||
matches := nameRegexp.FindAllStringSubmatch(render, -1) | ||
var names []indexerdb.Name | ||
for _, m := range matches { | ||
names = append(names, indexerdb.Name{Value: m[1] + ".gno", NetworkID: network.ChainID}) | ||
} | ||
if err := db.Save(names).Error; err != nil { | ||
logger.Error("failed to save names", zap.Error(err)) | ||
return | ||
} | ||
logger.Info("done", zap.Int("names-count", len(names))) | ||
}) | ||
schedule.StartBlocking() | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package indexerdb | ||
|
||
type Name struct { | ||
Value string `gorm:"primaryKey"` | ||
UserID string | ||
NetworkID string | ||
} |
Oops, something went wrong.