Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 19 additions & 17 deletions api/dbv1/get_events.sql.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

36 changes: 19 additions & 17 deletions api/dbv1/queries/get_events.sql
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
-- name: GetEvents :many
SELECT
event_id,
entity_type::event_entity_type,
user_id,
entity_id,
event_type::event_type,
end_date,
is_deleted,
created_at,
updated_at,
event_data
FROM events
e.event_id AS event_id,
e.entity_type::event_entity_type AS entity_type,
e.user_id AS user_id,
e.entity_id AS entity_id,
e.event_type::event_type AS event_type,
e.end_date AS end_date,
e.is_deleted AS is_deleted,
e.created_at AS created_at,
e.updated_at AS updated_at,
e.event_data AS event_data
FROM events e
LEFT JOIN tracks t ON t.track_id = e.entity_id AND t.is_current = true AND e.entity_type = 'track'
WHERE
(@entity_ids::int[] = '{}' OR entity_id = ANY(@entity_ids::int[]))
AND (@event_ids::int[] = '{}' OR event_id = ANY(@event_ids::int[]))
AND (@entity_type::text = '' OR entity_type = @entity_type::event_entity_type)
AND (@event_type::text = '' OR event_type = @event_type::event_type)
AND (@filter_deleted::boolean IS NULL OR is_deleted = @filter_deleted)
ORDER BY created_at DESC, event_id ASC
(@entity_ids::int[] = '{}' OR e.entity_id = ANY(@entity_ids::int[]))
AND (@event_ids::int[] = '{}' OR e.event_id = ANY(@event_ids::int[]))
AND (@entity_type::text = '' OR e.entity_type = @entity_type::event_entity_type)
AND (@event_type::text = '' OR e.event_type = @event_type::event_type)
AND (@filter_deleted::boolean IS NULL OR e.is_deleted = @filter_deleted)
AND (e.entity_type != 'track' OR (t.track_id IS NOT NULL AND t.is_delete = false))
ORDER BY e.created_at DESC, e.event_id ASC
LIMIT @limit_val
OFFSET @offset_val;
1 change: 1 addition & 0 deletions api/testdata/track_fixtures.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package testdata
var TrackFixtures = []map[string]any{
{"track_id": 100, "genre": "Electronic", "owner_id": 1, "title": "T1", "is_unlisted": "f", "is_downloadable": "t"},
{"track_id": 101, "genre": "Alternative", "owner_id": 1, "title": "T2", "is_unlisted": "f", "is_downloadable": "f"},
{"track_id": 102, "genre": "Alternative", "owner_id": 2, "title": "T3", "is_unlisted": "f", "is_downloadable": "f"},
{"track_id": 200, "genre": "Electronic", "owner_id": 2, "title": "Culca Canyon", "is_unlisted": "f", "is_downloadable": "f"},
{"track_id": 201, "genre": "Alternative", "owner_id": 2, "title": "Turkey Time DEMO", "is_unlisted": "t", "is_downloadable": "f"},
{"track_id": 202, "genre": "Alternative", "owner_id": 2, "title": "Turkey Time (live)", "is_unlisted": "f", "is_downloadable": "f"},
Expand Down
33 changes: 33 additions & 0 deletions api/v1_events_test.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package api

import (
"context"
"testing"

"api.audius.co/api/dbv1"
"api.audius.co/trashid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestGetEvents(t *testing.T) {
Expand Down Expand Up @@ -53,3 +55,34 @@ func TestGetEventsEntity(t *testing.T) {
"data.0.entity_id": trashid.MustEncodeHashID(102),
})
}

func TestGetEventsExcludesDeletedTracks(t *testing.T) {
app := testAppWithFixtures(t)
ctx := context.Background()
require.NotNil(t, app.writePool, "test requires write pool")

// Mark track 102 (which has event 6) as deleted
_, err := app.writePool.Exec(ctx, `UPDATE tracks SET is_delete = true WHERE track_id = 102 AND is_current = true`)
require.NoError(t, err)

var eventsResponse struct {
Data []dbv1.FullEvent
}
status, body := testGet(t, app, "/v1/events", &eventsResponse)
assert.Equal(t, 200, status)

// Event 6 is for entity_id 102; it must not appear when the track is deleted
entity102Hash := trashid.MustEncodeHashID(102)
for _, e := range eventsResponse.Data {
assert.NotEqual(t, entity102Hash, e.EntityId, "events for deleted track 102 must not be returned")
}

// Should have 4 events (1,2,4,5), not 5 (event 6 excluded)
assert.Len(t, eventsResponse.Data, 4, "expected 4 events after excluding event for deleted track")
jsonAssert(t, body, map[string]any{
"data.0.event_id": trashid.MustEncodeHashID(1),
"data.0.entity_id": trashid.MustEncodeHashID(100),
"data.3.event_id": trashid.MustEncodeHashID(5),
"data.3.entity_id": trashid.MustEncodeHashID(101),
})
}