diff --git a/go.mod b/go.mod index 044cf7033c..c2d1b398c4 100644 --- a/go.mod +++ b/go.mod @@ -4,15 +4,17 @@ go 1.19 require ( github.com/cyberhorsey/errors v0.0.0-20220929234051-087d6d8bb841 - github.com/cyberhorsey/webutils v0.0.0-20230119185838-43865c417a79 + github.com/cyberhorsey/webutils v0.0.0-20230314183728-56890c6ddbe7 github.com/ethereum/go-ethereum v1.10.26 github.com/joho/godotenv v1.4.0 github.com/labstack/echo-contrib v0.13.0 github.com/labstack/echo/v4 v4.9.1 github.com/labstack/gommon v0.4.0 + github.com/morkid/paginate v1.1.6 github.com/pkg/errors v0.9.1 github.com/pressly/goose v2.7.0+incompatible github.com/pressly/goose/v3 v3.7.0 + github.com/prometheus/client_golang v1.14.0 github.com/sirupsen/logrus v1.9.0 github.com/stretchr/testify v1.8.0 github.com/testcontainers/testcontainers-go v0.15.0 @@ -72,13 +74,11 @@ require ( github.com/moby/term v0.0.0-20220808134915-39b0c02b01ae // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/morkid/gocache v1.0.0 // indirect - github.com/morkid/paginate v1.1.6 // indirect github.com/neko-neko/echo-logrus/v2 v2.0.1 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect github.com/opencontainers/runc v1.1.3 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/prometheus/client_golang v1.14.0 // indirect github.com/prometheus/client_model v0.3.0 // indirect github.com/prometheus/common v0.37.0 // indirect github.com/prometheus/procfs v0.8.0 // indirect diff --git a/go.sum b/go.sum index 3162983641..442300e484 100644 --- a/go.sum +++ b/go.sum @@ -113,8 +113,6 @@ github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/btcsuite/btcd/btcec/v2 v2.2.0 h1:fzn1qaOt32TuLjFlkzYSsBC35Q3KUjT1SwPxiMSCF5k= -github.com/btcsuite/btcd/btcec/v2 v2.2.0/go.mod h1:U7MHm051Al6XmscBQ0BoNydpOTsFAn707034b5nY8zU= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= @@ -269,8 +267,8 @@ github.com/creack/pty v1.1.11 h1:07n33Z8lZxZ2qwegKbObQohDhXDQxiMMz1NOUGYlesw= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyberhorsey/errors v0.0.0-20220929234051-087d6d8bb841 h1:FaPua89k9KmkkiptlTAmYzcTsn1IFdQsqneuFO6IAu8= github.com/cyberhorsey/errors v0.0.0-20220929234051-087d6d8bb841/go.mod h1:qSH/IvpdArCjfny4ODMko/7U0z4JoNIWctgCnUrapnI= -github.com/cyberhorsey/webutils v0.0.0-20230119185838-43865c417a79 h1:kYxc139hoCg00VynxRxAY4D1ypMrWz83TqchNljIgMM= -github.com/cyberhorsey/webutils v0.0.0-20230119185838-43865c417a79/go.mod h1:bNNUHadsCy1HleNUToQ/t11vmKI9/+9Taw8K6GyxERo= +github.com/cyberhorsey/webutils v0.0.0-20230314183728-56890c6ddbe7 h1:KYOh2RfWAltxYsfD/Ar5D3zB4+AuNQejXW5BvMlGor4= +github.com/cyberhorsey/webutils v0.0.0-20230314183728-56890c6ddbe7/go.mod h1:bNNUHadsCy1HleNUToQ/t11vmKI9/+9Taw8K6GyxERo= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= @@ -283,9 +281,6 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= github.com/decred/dcrd/crypto/blake256 v1.0.0 h1:/8DMNYp9SGi5f0w7uCm6d6M4OU2rGFK09Y2A4Xv7EE0= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1 h1:YLtO71vCjJRCBcrPMtQ9nqBsqpA1m5sE92cU+pd5Mcc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= github.com/denisenkom/go-mssqldb v0.12.0/go.mod h1:iiK0YP1ZeepvmBQk/QpLEhhTNJgfzrpArPY/aFvc9yU= @@ -332,8 +327,6 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.m github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.10.25 h1:5dFrKJDnYf8L6/5o42abCE6a9yJm9cs4EJVRyYMr55s= -github.com/ethereum/go-ethereum v1.10.25/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/ethereum/go-ethereum v1.10.26 h1:i/7d9RBBwiXCEuyduBQzJw/mKmnvzsN14jqBmytw72s= github.com/ethereum/go-ethereum v1.10.26/go.mod h1:EYFyF19u3ezGLD4RqOkLq+ZCXzYbLoNDdZlMt7kyKFg= github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -793,15 +786,12 @@ github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQ github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2 h1:51L9cDoUHVrXx4zWYlcLQIZ+d+VXHgqnYKkIuq4g/34= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= github.com/prometheus/client_golang v1.14.0 h1:nJdhIvne2eSX/XRAFV9PcvFFRbrjbcTUj0VP62TMhnw= github.com/prometheus/client_golang v1.14.0/go.mod h1:8vpkKitgIVNcqrRBWh1C4TIUQgYNtG/XQE4E/Zae36Y= github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0 h1:UBgGFHqYdG/TPFD1B1ogZywDqEkwp3fBMvqdiQ7Xew4= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= @@ -1004,8 +994,6 @@ golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa h1:zuSxTR4o9y82ebqCUJYNGJbGPo6sKVl54f/TVDObg1c= -golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1089,8 +1077,6 @@ golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b h1:ZmngSVLe/wycRns9MKikG9OWIEjGcGAkacif7oYQaUY= -golang.org/x/net v0.0.0-20220826154423-83b083e8dc8b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.0.0-20220906165146-f3363e06e74c/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= @@ -1208,8 +1194,6 @@ golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab h1:2QkjZIsXupsJbJIdSjjUOgWK3aEtzyuh2mPt3l/CkeU= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0 h1:MUK/U/4lj1t1oPg0HfuXDN/Z1wv31ZJ/YcPiGccS4DU= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1223,7 +1207,6 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= @@ -1396,7 +1379,6 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= @@ -1454,8 +1436,6 @@ gorm.io/gorm v1.21.3/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.23.1/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= gorm.io/gorm v1.23.6/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk= -gorm.io/gorm v1.24.0 h1:j/CoiSm6xpRpmzbFJsQHYj+I8bGYWLXVHeYEyyKlF74= -gorm.io/gorm v1.24.0/go.mod h1:DVrVomtaYTbqs7gB/x2uVvqnXzv0nqjB396B8cG4dBA= gorm.io/gorm v1.24.6 h1:wy98aq9oFEetsc4CAbKD2SoBCdMzsbSIvSUUFJuHi5s= gorm.io/gorm v1.24.6/go.mod h1:L4uxeKpfBml98NYqVqwAdmV1a2nBtAec/cf3fpucW/k= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= diff --git a/packages/relayer/README.md b/packages/relayer/README.md index e5656c7308..1b9d1c4c13 100644 --- a/packages/relayer/README.md +++ b/packages/relayer/README.md @@ -73,10 +73,11 @@ Filter params: Mandatory: `address`: user's ethereum address who sent the message. -Optional: -`chainID`: chain ID of the source chain. Default: all chains. -`msgHash`: filter events by message hash. Default: all msgHashs. -`eventType`: filter events by event typoe. Default: all eventType. +Optional: +`chainID`: chain ID of the source chain. Default: all chains. Options: any integer. +`msgHash`: filter events by message hash. Default: all msgHashs. Options: any hash. +`eventType`: filter events by event type. Default: all eventType. Options: Enum value, `0` for sendETH, `1` for sendERC20. +`event`: filter events by event name. Default: all event names. Options: `MessageSent`, `MessageStatusChanged` Pagination: `page`: page number to retrive. Default: 0. diff --git a/packages/relayer/event.go b/packages/relayer/event.go index 0038c5348f..7d956badce 100644 --- a/packages/relayer/event.go +++ b/packages/relayer/event.go @@ -59,6 +59,7 @@ type Event struct { Amount string `json:"amount"` MsgHash string `json:"msgHash"` MessageOwner string `json:"messageOwner"` + Event string `json:"event"` } // SaveEventOpts @@ -75,11 +76,13 @@ type SaveEventOpts struct { Amount string MsgHash string MessageOwner string + Event string } type FindAllByAddressOpts struct { Address common.Address EventType *EventType + Event *string MsgHash *string ChainID *big.Int } diff --git a/packages/relayer/http/get_events_by_address.go b/packages/relayer/http/get_events_by_address.go index 1596ed089c..375bddc013 100644 --- a/packages/relayer/http/get_events_by_address.go +++ b/packages/relayer/http/get_events_by_address.go @@ -21,6 +21,8 @@ func (srv *Server) GetEventsByAddress(c echo.Context) error { eventTypeParam := html.EscapeString(c.QueryParam("eventType")) + event := html.EscapeString(c.QueryParam("event")) + var eventType *relayer.EventType if eventTypeParam != "" { @@ -42,6 +44,7 @@ func (srv *Server) GetEventsByAddress(c echo.Context) error { MsgHash: &msgHash, EventType: eventType, ChainID: chainID, + Event: &event, }, ) if err != nil { diff --git a/packages/relayer/indexer/handle_event.go b/packages/relayer/indexer/handle_event.go index 08aaac249d..e2b20efd33 100644 --- a/packages/relayer/indexer/handle_event.go +++ b/packages/relayer/indexer/handle_event.go @@ -64,6 +64,7 @@ func (svc *Service) handleEvent( Amount: amount.String(), MsgHash: common.Hash(event.MsgHash).Hex(), MessageOwner: event.Message.Owner.Hex(), + Event: relayer.EventNameMessageSent, }) if err != nil { return errors.Wrap(err, "svc.eventRepo.Save") diff --git a/packages/relayer/indexer/save_message_status_changed_events.go b/packages/relayer/indexer/save_message_status_changed_events.go index ce44f1a483..0ac0f2382b 100644 --- a/packages/relayer/indexer/save_message_status_changed_events.go +++ b/packages/relayer/indexer/save_message_status_changed_events.go @@ -65,6 +65,7 @@ func (svc *Service) saveMessageStatusChangedEvent( Status: relayer.EventStatus(event.Status), MessageOwner: previousEvents[0].MessageOwner, MsgHash: common.Hash(event.MsgHash).Hex(), + Event: relayer.EventNameMessageStatusChanged, }) if err != nil { return errors.Wrap(err, "svc.eventRepo.Save") diff --git a/packages/relayer/message/process_message.go b/packages/relayer/message/process_message.go index cc479b5edd..2cc5ecbbf4 100644 --- a/packages/relayer/message/process_message.go +++ b/packages/relayer/message/process_message.go @@ -209,6 +209,7 @@ func (p *Processor) saveMessageStatusChangedEvent( Status: relayer.EventStatus(m["status"].(uint8)), MsgHash: e.MsgHash, MessageOwner: e.MessageOwner, + Event: relayer.EventNameMessageStatusChanged, }) if err != nil { return errors.Wrap(err, "svc.eventRepo.Save") diff --git a/packages/relayer/migrations/1666650599_create_events_table.sql b/packages/relayer/migrations/1666650599_create_events_table.sql index 2cc73556c3..f018dd822d 100644 --- a/packages/relayer/migrations/1666650599_create_events_table.sql +++ b/packages/relayer/migrations/1666650599_create_events_table.sql @@ -5,6 +5,7 @@ CREATE TABLE IF NOT EXISTS events ( name VARCHAR(255) NOT NULL, status int NOT NULL DEFAULT 0, event_type int NOT NULL DEFAULT 0, + event VARCHAR(255) NOT NULL DEFAULT "", chain_id int NOT NULL, data JSON NOT NULL, canonical_token_address VARCHAR(255) DEFAULT "", diff --git a/packages/relayer/mock/event_repository.go b/packages/relayer/mock/event_repository.go index 5d4327708a..dd3317198f 100644 --- a/packages/relayer/mock/event_repository.go +++ b/packages/relayer/mock/event_repository.go @@ -29,6 +29,7 @@ func (r *EventRepository) Save(ctx context.Context, opts relayer.SaveEventOpts) Name: opts.Name, MessageOwner: opts.MessageOwner, MsgHash: opts.MsgHash, + EventType: opts.EventType, }) return nil, nil diff --git a/packages/relayer/repo/event.go b/packages/relayer/repo/event.go index 9c1c10441e..a5884bba76 100644 --- a/packages/relayer/repo/event.go +++ b/packages/relayer/repo/event.go @@ -40,6 +40,7 @@ func (r *EventRepository) Save(ctx context.Context, opts relayer.SaveEventOpts) Amount: opts.Amount, MsgHash: opts.MsgHash, MessageOwner: opts.MessageOwner, + Event: opts.Event, } if err := r.db.GormDB().Create(e).Error; err != nil { @@ -74,8 +75,6 @@ func (r *EventRepository) FindAllByMsgHash( return nil, errors.Wrap(err, "r.db.Find") } - // find all message status changed events - return e, nil } @@ -103,6 +102,10 @@ func (r *EventRepository) FindAllByAddress( q = q.Where("chain_id = ?", opts.ChainID.Int64()) } + if opts.Event != nil && *opts.Event != "" { + q = q.Where("event = ?", *opts.Event) + } + reqCtx := pg.With(q) page := reqCtx.Request(req).Response(&[]relayer.Event{}) diff --git a/packages/relayer/repo/event_test.go b/packages/relayer/repo/event_test.go index f10cb20dfc..183bd29ebe 100644 --- a/packages/relayer/repo/event_test.go +++ b/packages/relayer/repo/event_test.go @@ -38,6 +38,7 @@ var testEvents = []relayer.Event{ Amount: "1", MsgHash: testMsgHash, MessageOwner: addr.Hex(), + Event: relayer.EventNameMessageSent, }, { ID: 2, @@ -54,6 +55,7 @@ var testEvents = []relayer.Event{ Amount: "1", MsgHash: testMsgHash, MessageOwner: addr.Hex(), + Event: relayer.EventNameMessageSent, }, { ID: 3, @@ -70,6 +72,7 @@ var testEvents = []relayer.Event{ Amount: "1", MsgHash: testSecondMsgHash, MessageOwner: addr.Hex(), + Event: relayer.EventNameMessageStatusChanged, }, } @@ -126,6 +129,7 @@ func TestIntegration_Event_Save(t *testing.T) { Amount: "1", MsgHash: "0x1", MessageOwner: "0x1", + Event: relayer.EventNameMessageSent, }, nil, }, @@ -184,6 +188,7 @@ func TestIntegration_Event_UpdateStatus(t *testing.T) { Amount: "1", MsgHash: "0x1", MessageOwner: "0x1", + Event: relayer.EventNameMessageSent, }, ) assert.Equal(t, nil, err) @@ -218,6 +223,7 @@ func TestIntegration_Event_FindAllByAddress(t *testing.T) { Amount: "1", MsgHash: "0x1", MessageOwner: addr.Hex(), + Event: relayer.EventNameMessageSent, }) assert.Equal(t, nil, err) @@ -234,6 +240,7 @@ func TestIntegration_Event_FindAllByAddress(t *testing.T) { Amount: "1", MsgHash: "0x1", MessageOwner: addr.Hex(), + Event: relayer.EventNameMessageSent, }) assert.Equal(t, nil, err) @@ -250,6 +257,7 @@ func TestIntegration_Event_FindAllByAddress(t *testing.T) { Amount: "1", MsgHash: "0x2", MessageOwner: addr.Hex(), + Event: relayer.EventNameMessageStatusChanged, }) assert.Equal(t, nil, err) @@ -277,6 +285,25 @@ func TestIntegration_Event_FindAllByAddress(t *testing.T) { }, nil, }, + { + "successJustAddressAndEvent", + relayer.FindAllByAddressOpts{ + Address: addr, + Event: &relayer.EventNameMessageSent, + }, + paginate.Page{ + Items: testEvents[:2], + Page: 0, + Size: 100, + MaxPage: 1, + TotalPages: 1, + Total: 1, + Last: false, + First: true, + Visible: 1, + }, + nil, + }, { "successAddressAndMsgHash", relayer.FindAllByAddressOpts{ @@ -335,6 +362,26 @@ func TestIntegration_Event_FindAllByAddress(t *testing.T) { }, nil, }, + { + "successAddressMsgHashAndEvent", + relayer.FindAllByAddressOpts{ + Address: addr, + MsgHash: &testSecondMsgHash, + Event: &relayer.EventNameMessageStatusChanged, + }, + paginate.Page{ + Items: testEvents[2:], + Page: 0, + Size: 100, + MaxPage: 1, + TotalPages: 1, + Total: 1, + Last: false, + First: true, + Visible: 1, + }, + nil, + }, { "noneByAddr", relayer.FindAllByAddressOpts{