diff --git a/internal/dashboard/api.go b/internal/dashboard/api.go index 4664588..465c881 100644 --- a/internal/dashboard/api.go +++ b/internal/dashboard/api.go @@ -28,4 +28,5 @@ func InitDashboardApi(e *echo.Echo, db *pgxpool.Pool, queries goyesql.Queries) { g.GET("/transactions-count", handleTransactionsCount) g.GET("/token-transactions-count/:address", handleTokenTransactionsCount) g.GET("/token-volume/:address", handleTokenVolume) + g.GET("/latest-token-transactions/:address", handleLatestTokenTransactions) } diff --git a/internal/public/transactions.go b/internal/dashboard/transactions.go similarity index 65% rename from internal/public/transactions.go rename to internal/dashboard/transactions.go index afa4b80..dd711db 100644 --- a/internal/public/transactions.go +++ b/internal/dashboard/transactions.go @@ -1,14 +1,12 @@ -package public +package dashboard import ( - "cic-dw/pkg/pagination" "context" "net/http" "time" "github.com/georgysavva/scany/pgxscan" "github.com/labstack/echo/v4" - "github.com/rs/zerolog/log" ) type tokenTransactionsRes struct { @@ -22,27 +20,15 @@ type tokenTransactionsRes struct { Success bool `db:"success" json:"success"` } -func handleTokenTransactions(c echo.Context) error { +func handleLatestTokenTransactions(c echo.Context) error { var ( api = c.Get("api").(*api) token = c.Param("address") - pg = pagination.GetPagination(c.QueryParams()) data []tokenTransactionsRes ) - if pg.Cursor == -1 { - var max int64 - if err := api.db.QueryRow(context.Background(), "SELECT MAX(id) + 10 from transactions").Scan(&max); err != nil { - return err - } - - pg.Cursor = int(max) - } - - log.Info().Msgf("%d", pg.Cursor) - - rows, err := api.db.Query(context.Background(), api.q["latest-token-transactions"], token, pg.Cursor, pg.PerPage) + rows, err := api.db.Query(context.Background(), api.q["latest-token-transactions"], token) if err != nil { return err } @@ -51,5 +37,9 @@ func handleTokenTransactions(c echo.Context) error { return err } + if len(data) < 1 { + data = []tokenTransactionsRes{} + } + return c.JSON(http.StatusOK, data) } diff --git a/internal/public/api.go b/internal/public/api.go index 783e245..ce46aeb 100644 --- a/internal/public/api.go +++ b/internal/public/api.go @@ -37,5 +37,4 @@ func InitPublicApi(e *echo.Echo, db *pgxpool.Pool, batchBalance *batch_balance.B g.GET("/tokens", handleTokenListQuery) g.GET("/token/:address", handleTokenInfo) g.GET("/token-summary/:address", handleTokenSummary) - g.GET("/latest-token-transactions/:address", handleTokenTransactions) } diff --git a/queries/dashboard.sql b/queries/dashboard.sql index c12c16f..81e11e4 100644 --- a/queries/dashboard.sql +++ b/queries/dashboard.sql @@ -69,3 +69,8 @@ AND transactions.success = true GROUP BY date_range.day ORDER BY date_range.day LIMIT 730; + +--name: latest-token-transactions +-- Returns latest token transactions, with curosr forward query and limit +SELECT id, block_number, date_block, tx_hash, sender_address, recipient_address, tx_value, success FROM transactions +WHERE token_address = $1 AND date_block > TIMESTAMP 'yesterday' ORDER BY id DESC; \ No newline at end of file diff --git a/queries/public.sql b/queries/public.sql index 55ebaf7..d7b034e 100644 --- a/queries/public.sql +++ b/queries/public.sql @@ -45,10 +45,4 @@ SELECT COUNT(*) FROM transactions WHERE token_address = $1 AND transactions.sender_address NOT IN (SELECT sys_address FROM exclude) AND transactions.recipient_address NOT IN (SELECT sys_address FROM exclude) -AND transactions.success = true; - - ---name: latest-token-transactions --- Returns latest token transactions, with curosr forward query and limit -SELECT transactions.id, transactions.block_number, transactions.date_block, transactions.tx_hash, transactions.sender_address, transactions.recipient_address, transactions.tx_value, transactions.success FROM transactions -WHERE transactions.token_address = $1 AND transactions.id < $2 ORDER BY transactions.id DESC LIMIT $3; \ No newline at end of file +AND transactions.success = true; \ No newline at end of file