Add 3-month filter to last-txs endpoint
This commit is contained in:
parent
a583d81dbc
commit
ced17ebfae
|
@ -145,7 +145,7 @@ func (m *Metric) vaaCountMeasurement(ctx context.Context, vaa *sdk.VAA) error {
|
|||
}
|
||||
m.metrics.IncSuccessfulMeasurement(vaaCountMeasurement)
|
||||
|
||||
m.logger.Info("generated a data point for the vaa_count metric")
|
||||
m.logger.Info("generated a data point for the vaa count metric")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -36,12 +36,18 @@ union(tables: [aggregatesVaaCount, lastVaaCount])
|
|||
|> sort(columns: ["_time"], desc: true)
|
||||
`
|
||||
|
||||
func buildLastTrxQuery(bucket string, tm time.Time, q *TransactionCountQuery) string {
|
||||
func buildLastTrxQuery(
|
||||
dataPointsBucket string,
|
||||
aggregationsBucket string,
|
||||
tm time.Time,
|
||||
q *TransactionCountQuery,
|
||||
) string {
|
||||
|
||||
startLastVaa, startAggregatesVaa := createRangeQuery(tm, q.TimeSpan)
|
||||
if q.TimeSpan == "1d" && q.SampleRate == "1h" {
|
||||
return fmt.Sprintf(queryTemplateVaaCount1d1h, bucket, startLastVaa, q.SampleRate, bucket, startAggregatesVaa)
|
||||
return fmt.Sprintf(queryTemplateVaaCount1d1h, dataPointsBucket, startLastVaa, q.SampleRate, aggregationsBucket, startAggregatesVaa)
|
||||
}
|
||||
return fmt.Sprintf(queryTemplateVaaCount, bucket, startLastVaa, bucket, startAggregatesVaa)
|
||||
return fmt.Sprintf(queryTemplateVaaCount, dataPointsBucket, startLastVaa, aggregationsBucket, startAggregatesVaa)
|
||||
}
|
||||
|
||||
func createRangeQuery(t time.Time, timeSpan string) (string, string) {
|
||||
|
@ -57,6 +63,9 @@ func createRangeQuery(t time.Time, timeSpan string) (string, string) {
|
|||
case "1mo":
|
||||
startLastVaa = t.Truncate(time.Hour * 24)
|
||||
startAggregatesVaa = startLastVaa.Add(-time.Hour * 24 * 30)
|
||||
case "3mo":
|
||||
startLastVaa = t.Truncate(time.Hour * 24)
|
||||
startAggregatesVaa = startLastVaa.Add(-time.Hour * 24 * 90)
|
||||
default:
|
||||
startLastVaa = t.Truncate(time.Hour * 1)
|
||||
startAggregatesVaa = startLastVaa.Add(-time.Hour * 24)
|
||||
|
|
|
@ -51,7 +51,7 @@ lastVaaCount = from(bucket: "wormscan-1month")
|
|||
|> filter(fn: (r) => r["_measurement"] == "vaa_count")
|
||||
|> group()
|
||||
|> aggregateWindow(every: 1h, fn: count, createEmpty: true)
|
||||
aggregatesVaaCount = from(bucket: "wormscan-1month")
|
||||
aggregatesVaaCount = from(bucket: "wormscan")
|
||||
|> range(start: 2023-05-03T18:00:00Z)
|
||||
|> filter(fn: (r) => r["_measurement"] == "vaa_count_1h")
|
||||
union(tables: [aggregatesVaaCount, lastVaaCount])
|
||||
|
@ -60,7 +60,7 @@ union(tables: [aggregatesVaaCount, lastVaaCount])
|
|||
`
|
||||
//2023-05-04T18:39:10.985Z
|
||||
tm := time.Date(2023, 5, 4, 18, 39, 10, 985, time.UTC)
|
||||
actual := buildLastTrxQuery("wormscan-1month", tm, &TransactionCountQuery{TimeSpan: "1d", SampleRate: "1h"})
|
||||
actual := buildLastTrxQuery("wormscan-1month", "wormscan", tm, &TransactionCountQuery{TimeSpan: "1d", SampleRate: "1h"})
|
||||
assert.Equal(t, expected, actual)
|
||||
}
|
||||
|
||||
|
@ -71,7 +71,7 @@ lastVaaCount = from(bucket: "wormscan-1month")
|
|||
|> range(start: 2023-05-04T00:00:00Z)
|
||||
|> filter(fn: (r) => r["_measurement"] == "vaa_count")
|
||||
|> group()
|
||||
aggregatesVaaCount = from(bucket: "wormscan-1month")
|
||||
aggregatesVaaCount = from(bucket: "wormscan")
|
||||
|> range(start: 2023-04-27T00:00:00Z)
|
||||
|> filter(fn: (r) => r["_measurement"] == "vaa_count_1h")
|
||||
|> aggregateWindow(every: 1h, fn: sum, createEmpty: true)
|
||||
|
@ -82,7 +82,7 @@ union(tables: [aggregatesVaaCount, lastVaaCount])
|
|||
`
|
||||
//2023-05-04T18:39:10.985Z
|
||||
tm := time.Date(2023, 5, 4, 18, 39, 10, 985, time.UTC)
|
||||
actual := buildLastTrxQuery("wormscan-1month", tm, &TransactionCountQuery{TimeSpan: "1w", SampleRate: "1d"})
|
||||
actual := buildLastTrxQuery("wormscan-1month", "wormscan", tm, &TransactionCountQuery{TimeSpan: "1w", SampleRate: "1d"})
|
||||
assert.Equal(t, expected, actual)
|
||||
}
|
||||
|
||||
|
|
|
@ -623,7 +623,8 @@ func (r *Repository) getVolume24h(ctx context.Context) (string, error) {
|
|||
|
||||
// GetTransactionCount get the last transactions.
|
||||
func (r *Repository) GetTransactionCount(ctx context.Context, q *TransactionCountQuery) ([]TransactionCountResult, error) {
|
||||
query := buildLastTrxQuery(r.bucket30DaysRetention, time.Now(), q)
|
||||
|
||||
query := buildLastTrxQuery(r.bucket30DaysRetention, r.bucketInfiniteRetention, time.Now(), q)
|
||||
result, err := r.queryAPI.Query(ctx, query)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -631,6 +632,7 @@ func (r *Repository) GetTransactionCount(ctx context.Context, q *TransactionCoun
|
|||
if result.Err() != nil {
|
||||
return nil, result.Err()
|
||||
}
|
||||
|
||||
response := []TransactionCountResult{}
|
||||
for result.Next() {
|
||||
var row TransactionCountResult
|
||||
|
@ -644,7 +646,7 @@ func (r *Repository) GetTransactionCount(ctx context.Context, q *TransactionCoun
|
|||
// https://github.com/wormhole-foundation/wormhole-explorer/issues/406
|
||||
for i := range response {
|
||||
if i > 0 {
|
||||
if q.TimeSpan == "1w" || q.TimeSpan == "1mo" {
|
||||
if q.TimeSpan == "1w" || q.TimeSpan == "1mo" || q.TimeSpan == "3mo" {
|
||||
response[i].Time = response[i].Time.AddDate(0, 0, -1)
|
||||
} else if q.TimeSpan == "1d" {
|
||||
response[i].Time = response[i].Time.Add(-1 * time.Hour)
|
||||
|
|
|
@ -297,10 +297,12 @@ func isValidSampleRate(sampleRate string) bool {
|
|||
}
|
||||
|
||||
func ExtractTimeSpanAndSampleRate(c *fiber.Ctx, l *zap.Logger) (string, string, error) {
|
||||
|
||||
timeSpan, err := ExtractTimeSpan(c, l)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
sampleRate, err := ExtractSampleRate(c, l)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
|
@ -319,6 +321,10 @@ func ExtractTimeSpanAndSampleRate(c *fiber.Ctx, l *zap.Logger) (string, string,
|
|||
if sampleRate != "1d" {
|
||||
return "", "", response.NewInvalidQueryParamError(c, "INVALID CONFIGURATION <timeSpan>, <sampleRate> QUERY PARAMETERS", nil)
|
||||
}
|
||||
case "3mo":
|
||||
if sampleRate != "1d" {
|
||||
return "", "", response.NewInvalidQueryParamError(c, "INVALID CONFIGURATION <timeSpan>, <sampleRate> QUERY PARAMETERS", nil)
|
||||
}
|
||||
}
|
||||
|
||||
return timeSpan, sampleRate, nil
|
||||
|
|
|
@ -38,6 +38,7 @@ func NewController(transactionsService *transactions.Service, logger *zap.Logger
|
|||
// @Failure 500
|
||||
// @Router /api/v1/last-txs [get]
|
||||
func (c *Controller) GetLastTransactions(ctx *fiber.Ctx) error {
|
||||
|
||||
timeSpan, sampleRate, err := middleware.ExtractTimeSpanAndSampleRate(ctx, c.logger)
|
||||
if err != nil {
|
||||
return err
|
||||
|
|
Loading…
Reference in New Issue