Explorar o código

cloud functions: use rowkey data in Summary

Change-Id: I756ab54539b14676256e252f668874455a279e74
justinschuldt %!s(int64=4) %!d(string=hai) anos
pai
achega
afe4fad438

+ 1 - 1
event_database/cloud_functions/go.mod

@@ -11,5 +11,5 @@ require (
 
 require (
 	github.com/GoogleCloudPlatform/functions-framework-go v1.3.0
-	github.com/certusone/wormhole/node v0.0.0-20211027001206-19628733285e
+	github.com/certusone/wormhole/node v0.0.0-20211102011245-d412cb8a936a
 )

+ 2 - 0
event_database/cloud_functions/go.sum

@@ -170,6 +170,8 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
 github.com/certusone/wormhole/node v0.0.0-20211027001206-19628733285e h1:BQJb2Taq7MMbh+o4AVOiNmFxgNtfMbx8nGJGA3tjiek=
 github.com/certusone/wormhole/node v0.0.0-20211027001206-19628733285e/go.mod h1:YncgdSOYam7ELyXFo7PFCj6tUo0pe6cjlj+O3Vt28mo=
+github.com/certusone/wormhole/node v0.0.0-20211102011245-d412cb8a936a h1:XR4jqFpH5MhKlYjWPHnd+agQaxKs7kynj5vKc09A18Y=
+github.com/certusone/wormhole/node v0.0.0-20211102011245-d412cb8a936a/go.mod h1:YncgdSOYam7ELyXFo7PFCj6tUo0pe6cjlj+O3Vt28mo=
 github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s=
 github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=

+ 29 - 0
event_database/cloud_functions/shared.go

@@ -5,6 +5,7 @@ import (
 	"log"
 	"net/http"
 	"os"
+	"strings"
 	"sync"
 
 	"cloud.google.com/go/bigtable"
@@ -64,6 +65,22 @@ type (
 	}
 )
 
+func chainIdStringToType(chainId string) vaa.ChainID {
+	switch chainId {
+	case "1":
+		return vaa.ChainIDSolana
+	case "2":
+		return vaa.ChainIDEthereum
+	case "3":
+		return vaa.ChainIDTerra
+	case "4":
+		return vaa.ChainIDBSC
+	case "5":
+		return vaa.ChainIDPolygon
+	}
+	return vaa.ChainIDUnset
+}
+
 func makeSummary(row bigtable.Row) *Summary {
 	summary := &Summary{}
 	if _, ok := row[columnFamilies[0]]; ok {
@@ -82,6 +99,18 @@ func makeSummary(row bigtable.Row) *Summary {
 				summary.Sequence = string(item.Value)
 			}
 		}
+	} else {
+		// Some rows have a QuorumState, but no MessagePublication,
+		// so populate Summary values from the rowKey.
+		keyParts := strings.Split(row.Key(), ":")
+		chainId := chainIdStringToType(keyParts[0])
+		summary.EmitterChain = chainId.String()
+		summary.EmitterAddress = keyParts[1]
+		seq := strings.TrimLeft(keyParts[2], "0")
+		if seq == "" {
+			seq = "0"
+		}
+		summary.Sequence = seq
 	}
 	if _, ok := row[columnFamilies[3]]; ok {
 		item := row[columnFamilies[3]][0]