From 15f11e53a575856850a5de8c4ad54c862751f2c8 Mon Sep 17 00:00:00 2001 From: Ken Erwin Date: Tue, 15 Oct 2024 18:27:25 -0400 Subject: [PATCH] :bug: Fix historical images --- backend/internal/ingestor/ingestor.go | 4 ++- backend/internal/ingestor/metadata.go | 45 +++++++++++++++++---------- 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/backend/internal/ingestor/ingestor.go b/backend/internal/ingestor/ingestor.go index 3db4938..20700ce 100644 --- a/backend/internal/ingestor/ingestor.go +++ b/backend/internal/ingestor/ingestor.go @@ -960,7 +960,9 @@ func (i *Ingestor) updateTileDataAndSync(ctx context.Context) error { } // Generate tiledata.json - GenerateTiledataJSON(allTiles) + if err := GenerateTiledataJSON(allTiles, i.queries, ctx); err != nil { + return fmt.Errorf("failed to generate tiledata.json: %w", err) + } // Sync with S3 if s3Syncer is initialized if i.s3Syncer != nil { diff --git a/backend/internal/ingestor/metadata.go b/backend/internal/ingestor/metadata.go index 8b3b3b2..e4dc035 100644 --- a/backend/internal/ingestor/metadata.go +++ b/backend/internal/ingestor/metadata.go @@ -1,6 +1,7 @@ package ingestor import ( + "context" "encoding/json" "fmt" "log" @@ -28,27 +29,39 @@ type MetadataPixelMapTile struct { } // GenerateTiledataJSON generates the tiledata.json file -func GenerateTiledataJSON(tiles []db.Tile) error { - +func GenerateTiledataJSON(tiles []db.Tile, queries *db.Queries, ctx context.Context) error { logger.Println("Generating tiledata.json") - tiledataJSON := make([]map[string]interface{}, 3970) + tiledataJSON := make([]map[string]interface{}, len(tiles)) + + for i, tile := range tiles { + // Fetch data history for the tile + dataHistory, err := queries.GetDataHistoryByTileId(ctx, tile.ID) + if err != nil { + return fmt.Errorf("error fetching data history for tile %d: %w", tile.ID, err) + } - for i := 0; i <= 3969; i++ { - tile := tiles[i] - if err := updateTileMetadata(tile, nil); err != nil { - return fmt.Errorf("error updating tile metadata: %w", err) + // Convert data history to a format suitable for JSON + historicalImages := make([]map[string]interface{}, len(dataHistory)) + for j, history := range dataHistory { + historicalImages[j] = map[string]interface{}{ + "blockNumber": history.BlockNumber, + "date": history.TimeStamp, + "image": history.Image, + "image_url": fmt.Sprintf("https://pixelmap.art/%d/%d.png", tile.ID, history.BlockNumber), + } } tiledataJSON[i] = map[string]interface{}{ - "id": tile.ID, - "url": tile.Url, - "image": tile.Image, - "owner": tile.Owner, - "price": tile.Price, - "wrapped": tile.Wrapped, - "openseaPrice": tile.OpenseaPrice, - "lastUpdated": time.Date(2021, time.December, 13, 1, 1, 0, 0, time.UTC), - "ens": tile.Ens, + "id": tile.ID, + "url": tile.Url, + "image": tile.Image, + "owner": tile.Owner, + "price": tile.Price, + "wrapped": tile.Wrapped, + "openseaPrice": tile.OpenseaPrice, + "lastUpdated": time.Date(2021, time.December, 13, 1, 1, 0, 0, time.UTC), + "ens": tile.Ens, + "historical_images": historicalImages, // Add historical images here } }