From 8d26e7bf3d58275e0dda5d39ce0a2edc861eda42 Mon Sep 17 00:00:00 2001 From: Mohammed Sohail Date: Mon, 10 Feb 2025 13:37:20 +0300 Subject: [PATCH] feat [UNTESTED]: set removed flags on pools and tokens --- cmd/service/router.go | 5 +++++ internal/handler/index_remove.go | 11 +++++++++++ internal/store/pg.go | 26 ++++++++++++++++++++++++++ internal/store/store.go | 1 + migrations/003_add_removed_status.sql | 5 +++++ queries.sql | 8 ++++++++ 6 files changed, 56 insertions(+) create mode 100644 internal/handler/index_remove.go create mode 100644 migrations/003_add_removed_status.sql diff --git a/cmd/service/router.go b/cmd/service/router.go index 91332e3..e9630f3 100644 --- a/cmd/service/router.go +++ b/cmd/service/router.go @@ -43,5 +43,10 @@ func bootstrapRouter(handlerContainer *handler.Handler) *router.Router { handlerContainer.IndexOwnershipChange, ) + router.RegisterRoute( + "TRACKER.INDEX_REMOVE", + handlerContainer.IndexRemove, + ) + return router } diff --git a/internal/handler/index_remove.go b/internal/handler/index_remove.go new file mode 100644 index 0000000..a92b863 --- /dev/null +++ b/internal/handler/index_remove.go @@ -0,0 +1,11 @@ +package handler + +import ( + "context" + + "github.com/grassrootseconomics/eth-tracker/pkg/event" +) + +func (h *Handler) IndexRemove(ctx context.Context, event event.Event) error { + return h.store.RemoveContractAddress(ctx, event) +} diff --git a/internal/store/pg.go b/internal/store/pg.go index 1900b30..f1bd180 100644 --- a/internal/store/pg.go +++ b/internal/store/pg.go @@ -39,6 +39,8 @@ type ( InsertOwnershipChange string `query:"insert-ownership-change"` InsertToken string `query:"insert-token"` InsertPool string `query:"insert-pool"` + RemovePool string `query:"remove-pool"` + RemoveToken string `query:"remove-token"` } ) @@ -247,6 +249,30 @@ func (pg *Pg) InsertPool(ctx context.Context, contractAddress string, name strin }) } +func (pg *Pg) RemoveContractAddress(ctx context.Context, eventPayload event.Event) error { + return pg.executeTransaction(ctx, func(tx pgx.Tx) error { + _, err := tx.Exec( + ctx, + pg.queries.RemovePool, + eventPayload.Payload["address"].(string), + ) + if err != nil { + return err + } + + _, err = tx.Exec( + ctx, + pg.queries.RemoveToken, + eventPayload.Payload["address"].(string), + ) + if err != nil { + return err + } + + return nil + }) +} + func (pg *Pg) insertTx(ctx context.Context, tx pgx.Tx, eventPayload event.Event) (int, error) { var txID int if err := tx.QueryRow( diff --git a/internal/store/store.go b/internal/store/store.go index ba5180e..e43a787 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -18,6 +18,7 @@ type ( InsertOwnershipChange(context.Context, event.Event) error InsertToken(context.Context, string, string, string, uint8, string) error InsertPool(context.Context, string, string, string) error + RemoveContractAddress(context.Context, event.Event) error Pool() *pgxpool.Pool Close() } diff --git a/migrations/003_add_removed_status.sql b/migrations/003_add_removed_status.sql new file mode 100644 index 0000000..0dea6c7 --- /dev/null +++ b/migrations/003_add_removed_status.sql @@ -0,0 +1,5 @@ +ALTER TABLE tokens +ADD COLUMN removed BOOLEAN NOT NULL DEFAULT false; + +ALTER TABLE pools +ADD COLUMN removed BOOLEAN NOT NULL DEFAULT false; \ No newline at end of file diff --git a/queries.sql b/queries.sql index 69b7e2e..21cae9e 100644 --- a/queries.sql +++ b/queries.sql @@ -139,3 +139,11 @@ INSERT INTO pools( pool_name, pool_symbol ) VALUES ($1, $2, $3) ON CONFLICT DO NOTHING + +--name: remove-pool +-- $1: contract_address +UPDATE pools SET removed = true WHERE contract_address = $1 + +--name: remove-token +-- $1: contract_address +UPDATE tokens SET removed = true WHERE contract_address = $1