Save tweets with unknown user as <UNKNOWN USER> instead of UserID 0, which causes foreign key errors
This commit is contained in:
parent
4dbe8b1558
commit
cac87ec973
@ -522,7 +522,7 @@ func (e APIV2Entry) ToTweetTrove() TweetTrove {
|
|||||||
}
|
}
|
||||||
ret, err := e.Content.ItemContent.TweetResults.ToTweetTrove()
|
ret, err := e.Content.ItemContent.TweetResults.ToTweetTrove()
|
||||||
|
|
||||||
// Handle tombstones in parent reply thread
|
// Handle tombstones in the focused tweet and parent reply thread
|
||||||
if errors.Is(err, ErrorIsTombstone) {
|
if errors.Is(err, ErrorIsTombstone) {
|
||||||
ret = NewTweetTrove() // clear the result just in case there is a TweetID(0) in it
|
ret = NewTweetTrove() // clear the result just in case there is a TweetID(0) in it
|
||||||
tombstoned_tweet := APITweet{}
|
tombstoned_tweet := APITweet{}
|
||||||
@ -547,6 +547,10 @@ func (e APIV2Entry) ToTweetTrove() TweetTrove {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fake_user := GetUnknownUser()
|
||||||
|
ret.Users[fake_user.ID] = fake_user
|
||||||
|
parsed_tombstone_tweet.UserID = fake_user.ID
|
||||||
ret.Tweets[parsed_tombstone_tweet.ID] = parsed_tombstone_tweet
|
ret.Tweets[parsed_tombstone_tweet.ID] = parsed_tombstone_tweet
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
if e.Content.ItemContent.APIV2UserResult.UserResults.Result.ID != 0 {
|
if e.Content.ItemContent.APIV2UserResult.UserResults.Result.ID != 0 {
|
||||||
@ -764,9 +768,9 @@ func (api_response APIV2Response) ToTweetTrove() (TweetTrove, error) {
|
|||||||
|
|
||||||
// Fill out the replied tweet's UserID using this tweet's "in_reply_to_user_id".
|
// Fill out the replied tweet's UserID using this tweet's "in_reply_to_user_id".
|
||||||
// If this tweet doesn't have it (i.e., this tweet is also a tombstone), create a fake user instead, and add it to the tweet trove.
|
// If this tweet doesn't have it (i.e., this tweet is also a tombstone), create a fake user instead, and add it to the tweet trove.
|
||||||
if replied_tweet.UserID == 0 {
|
if replied_tweet.UserID == 0 || replied_tweet.UserID == GetUnknownUser().ID {
|
||||||
replied_tweet.UserID = tweet.in_reply_to_user_id
|
replied_tweet.UserID = tweet.in_reply_to_user_id
|
||||||
if replied_tweet.UserID == 0 {
|
if replied_tweet.UserID == 0 || replied_tweet.UserID == GetUnknownUser().ID {
|
||||||
fake_user := GetUnknownUser()
|
fake_user := GetUnknownUser()
|
||||||
ret.Users[fake_user.ID] = fake_user
|
ret.Users[fake_user.ID] = fake_user
|
||||||
replied_tweet.UserID = fake_user.ID
|
replied_tweet.UserID = fake_user.ID
|
||||||
|
@ -584,12 +584,21 @@ func TestAPIV2TombstoneEntry(t *testing.T) {
|
|||||||
trove := entry.ToTweetTrove()
|
trove := entry.ToTweetTrove()
|
||||||
assert.NoError(err)
|
assert.NoError(err)
|
||||||
assert.Len(trove.Tweets, 1)
|
assert.Len(trove.Tweets, 1)
|
||||||
assert.Len(trove.Users, 0)
|
assert.Len(trove.Users, 1)
|
||||||
assert.Len(trove.Retweets, 0)
|
assert.Len(trove.Retweets, 0)
|
||||||
|
|
||||||
tweet, is_ok := trove.Tweets[1454515503242829830]
|
tweet, is_ok := trove.Tweets[1454515503242829830]
|
||||||
assert.True(is_ok)
|
assert.True(is_ok)
|
||||||
|
assert.True(tweet.IsStub)
|
||||||
|
assert.Equal("hidden", tweet.TombstoneType)
|
||||||
assert.Equal(tweet.ID, TweetID(1454515503242829830))
|
assert.Equal(tweet.ID, TweetID(1454515503242829830))
|
||||||
|
|
||||||
|
expected_user := GetUnknownUser()
|
||||||
|
assert.Equal(expected_user.ID, tweet.UserID)
|
||||||
|
|
||||||
|
assert.Len(trove.Users, 1)
|
||||||
|
_, is_ok = trove.Users[expected_user.ID]
|
||||||
|
assert.True(is_ok)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAPIV2UserFeedTombstoneEntry(t *testing.T) {
|
func TestAPIV2UserFeedTombstoneEntry(t *testing.T) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user