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()
|
||||
|
||||
// Handle tombstones in parent reply thread
|
||||
// Handle tombstones in the focused tweet and parent reply thread
|
||||
if errors.Is(err, ErrorIsTombstone) {
|
||||
ret = NewTweetTrove() // clear the result just in case there is a TweetID(0) in it
|
||||
tombstoned_tweet := APITweet{}
|
||||
@ -547,6 +547,10 @@ func (e APIV2Entry) ToTweetTrove() TweetTrove {
|
||||
if err != nil {
|
||||
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
|
||||
} else if err != nil {
|
||||
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".
|
||||
// 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
|
||||
if replied_tweet.UserID == 0 {
|
||||
if replied_tweet.UserID == 0 || replied_tweet.UserID == GetUnknownUser().ID {
|
||||
fake_user := GetUnknownUser()
|
||||
ret.Users[fake_user.ID] = fake_user
|
||||
replied_tweet.UserID = fake_user.ID
|
||||
|
@ -584,12 +584,21 @@ func TestAPIV2TombstoneEntry(t *testing.T) {
|
||||
trove := entry.ToTweetTrove()
|
||||
assert.NoError(err)
|
||||
assert.Len(trove.Tweets, 1)
|
||||
assert.Len(trove.Users, 0)
|
||||
assert.Len(trove.Users, 1)
|
||||
assert.Len(trove.Retweets, 0)
|
||||
|
||||
tweet, is_ok := trove.Tweets[1454515503242829830]
|
||||
assert.True(is_ok)
|
||||
assert.True(tweet.IsStub)
|
||||
assert.Equal("hidden", tweet.TombstoneType)
|
||||
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) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user