From dac10fa13ccea6582d551a1a6ecb833ff7e3107d Mon Sep 17 00:00:00 2001 From: Alessio Date: Fri, 23 Dec 2022 00:00:13 -0500 Subject: [PATCH] Tighten up no-worsening of spaces, add saving ShortUrl when scraping from feed --- persistence/space_queries.go | 4 ++-- persistence/space_queries_test.go | 6 ++++++ scraper/tweet_trove.go | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/persistence/space_queries.go b/persistence/space_queries.go index d383424..bd5c616 100644 --- a/persistence/space_queries.go +++ b/persistence/space_queries.go @@ -25,12 +25,12 @@ func (p Profile) SaveSpace(s scraper.Space) error { set id=:id, created_by_id=case when created_by_id is not null then created_by_id else nullif(:created_by_id, 0) end, short_url=case when short_url == "" then :short_url else short_url end, - state=:state, + state=case when :state != "" then :state else state end, title=case when :is_details_fetched then :title else title end, updated_at=max(:updated_at, updated_at), is_available_for_replay=:is_available_for_replay, replay_watch_count=:replay_watch_count, - live_listeners_count=:live_listeners_count, + live_listeners_count=max(:live_listeners_count, live_listeners_count), is_details_fetched=(is_details_fetched or :is_details_fetched) `, &s) if err != nil { diff --git a/persistence/space_queries_test.go b/persistence/space_queries_test.go index 10d2747..0f621c1 100644 --- a/persistence/space_queries_test.go +++ b/persistence/space_queries_test.go @@ -38,10 +38,12 @@ func TestNoWorseningSpace(t *testing.T) { space := create_space_from_id(rand.Int()) space.ShortUrl = "Some Short Url" + space.State = "Some State" space.Title = "Debating Somebody" space.CreatedAt = scraper.TimestampFromUnix(1000) space.UpdatedAt = scraper.TimestampFromUnix(2000) space.CreatedById = scraper.UserID(-1) + space.LiveListenersCount = 100 space.IsDetailsFetched = true // Save the space @@ -51,9 +53,11 @@ func TestNoWorseningSpace(t *testing.T) { // Worsen the space, then re-save space.ShortUrl = "" space.Title = "" + space.State = "" space.CreatedAt = scraper.TimestampFromUnix(0) space.UpdatedAt = scraper.TimestampFromUnix(0) space.CreatedById = scraper.UserID(0) + space.LiveListenersCount = 0 space.IsDetailsFetched = false err = profile.SaveSpace(space) require.NoError(err) @@ -63,9 +67,11 @@ func TestNoWorseningSpace(t *testing.T) { require.NoError(err) assert.Equal(new_space.ShortUrl, "Some Short Url") + assert.Equal(new_space.State, "Some State") assert.Equal(new_space.Title, "Debating Somebody") assert.Equal(new_space.CreatedAt, scraper.TimestampFromUnix(1000)) assert.Equal(new_space.UpdatedAt, scraper.TimestampFromUnix(2000)) assert.Equal(new_space.CreatedById, scraper.UserID(-1)) + assert.Equal(new_space.LiveListenersCount, int64(100)) assert.True(new_space.IsDetailsFetched) } diff --git a/scraper/tweet_trove.go b/scraper/tweet_trove.go index 8677f48..602c741 100644 --- a/scraper/tweet_trove.go +++ b/scraper/tweet_trove.go @@ -130,6 +130,10 @@ func (trove *TweetTrove) FillSpaceDetails() error { } // Replace the old space in the trove with the new, updated one new_space, is_ok := new_trove.Spaces[i] + if new_space.ShortUrl == "" { + // Copy over the short-url, which doesn't seem to exist on a full Space response + new_space.ShortUrl = trove.Spaces[i].ShortUrl + } if is_ok { // Necessary to check is_ok because the space response could be empty, in which case // we don't want to overwrite it