From 2d35c37e17041f6b0335ace9557341883dfd799f Mon Sep 17 00:00:00 2001 From: Alessio Date: Sun, 15 Sep 2024 15:34:56 -0700 Subject: [PATCH] Simply ErrNotInDatabase implementation --- internal/webserver/handler_tweet_detail.go | 4 ++-- internal/webserver/handler_user_feed.go | 4 ++-- pkg/persistence/compound_queries.go | 3 +-- pkg/persistence/list_queries.go | 2 +- pkg/persistence/tweet_queries.go | 2 +- pkg/persistence/tweet_queries_test.go | 2 +- pkg/persistence/user_queries.go | 4 ++-- pkg/persistence/utils.go | 12 +----------- 8 files changed, 11 insertions(+), 22 deletions(-) diff --git a/internal/webserver/handler_tweet_detail.go b/internal/webserver/handler_tweet_detail.go index ad3ba1e..1ad0f7a 100644 --- a/internal/webserver/handler_tweet_detail.go +++ b/internal/webserver/handler_tweet_detail.go @@ -32,7 +32,7 @@ func (app *Application) ensure_tweet(id scraper.TweetID, is_forced bool, is_conv // Check if tweet is already in DB tweet, err := app.Profile.GetTweetById(id) if err != nil { - if errors.Is(err, persistence.ErrNotInDB) { + if errors.Is(err, persistence.ErrNotInDatabase) { is_needing_scrape = true is_available = false } else { @@ -154,7 +154,7 @@ func (app *Application) TweetDetail(w http.ResponseWriter, r *http.Request) { } twt_detail, err := app.Profile.GetTweetDetail(data.MainTweetID, app.ActiveUser.ID) - panic_if(err) // ErrNotInDB should be impossible, since we already fetched the single tweet successfully + panic_if(err) // ErrNotInDatabase should be impossible, since we already fetched the single tweet successfully data.TweetDetailView = twt_detail diff --git a/internal/webserver/handler_user_feed.go b/internal/webserver/handler_user_feed.go index c6fb044..ad9569d 100644 --- a/internal/webserver/handler_user_feed.go +++ b/internal/webserver/handler_user_feed.go @@ -105,7 +105,7 @@ func (app *Application) UserFeed(w http.ResponseWriter, r *http.Request) { // Also, only show pinned tweets on default tab (tweets+replies) or "without_replies" tab if user.PinnedTweetID != scraper.TweetID(0) && (len(parts) <= 1 || parts[1] == "without_replies") { data.PinnedTweet, err = app.Profile.GetTweetById(user.PinnedTweetID) - if err != nil && !errors.Is(err, persistence.ErrNotInDB) { + if err != nil && !errors.Is(err, persistence.ErrNotInDatabase) { panic(err) } feed.TweetTrove.Tweets[data.PinnedTweet.ID] = data.PinnedTweet @@ -113,7 +113,7 @@ func (app *Application) UserFeed(w http.ResponseWriter, r *http.Request) { // Fetch quoted tweet if necessary if data.PinnedTweet.QuotedTweetID != scraper.TweetID(0) { feed.TweetTrove.Tweets[data.PinnedTweet.QuotedTweetID], err = app.Profile.GetTweetById(data.PinnedTweet.QuotedTweetID) - if err != nil && !errors.Is(err, persistence.ErrNotInDB) { + if err != nil && !errors.Is(err, persistence.ErrNotInDatabase) { panic(err) } // And the user diff --git a/pkg/persistence/compound_queries.go b/pkg/persistence/compound_queries.go index a6382a2..e9106ae 100644 --- a/pkg/persistence/compound_queries.go +++ b/pkg/persistence/compound_queries.go @@ -11,7 +11,6 @@ import ( var ( ErrEndOfFeed = errors.New("end of feed") - ErrNotInDB = errors.New("not in database") ) // TODO: make this a SQL view? @@ -257,7 +256,7 @@ func (p Profile) GetTweetDetail(id TweetID, current_user_id UserID) (TweetDetail panic(err) } if len(thread) == 0 { - return ret, fmt.Errorf("Tweet ID %d: %w", id, ErrNotInDB) + return ret, fmt.Errorf("Tweet ID %d: %w", id, ErrNotInDatabase) } for _, tweet := range thread { ret.Tweets[tweet.ID] = tweet diff --git a/pkg/persistence/list_queries.go b/pkg/persistence/list_queries.go index 86246c3..5de506a 100644 --- a/pkg/persistence/list_queries.go +++ b/pkg/persistence/list_queries.go @@ -84,7 +84,7 @@ func (p Profile) GetListById(list_id ListID) (List, error) { var ret List err := p.DB.Get(&ret, `select rowid, is_online, online_list_id, name from lists where rowid = ?`, list_id) if errors.Is(err, sql.ErrNoRows) { - return List{}, ErrNotInDatabase{"List", list_id} + return List{}, ErrNotInDatabase } else if err != nil { panic(err) } diff --git a/pkg/persistence/tweet_queries.go b/pkg/persistence/tweet_queries.go index 2f48311..7953c59 100644 --- a/pkg/persistence/tweet_queries.go +++ b/pkg/persistence/tweet_queries.go @@ -133,7 +133,7 @@ func (p Profile) GetTweetById(id TweetID) (Tweet, error) { if err != nil { if errors.Is(err, sql.ErrNoRows) { - return Tweet{}, fmt.Errorf("GetTweetById %d: %w", id, ErrNotInDB) + return Tweet{}, fmt.Errorf("GetTweetById %d: %w", id, ErrNotInDatabase) } else { panic(err) } diff --git a/pkg/persistence/tweet_queries_test.go b/pkg/persistence/tweet_queries_test.go index 6234b57..a48e865 100644 --- a/pkg/persistence/tweet_queries_test.go +++ b/pkg/persistence/tweet_queries_test.go @@ -334,5 +334,5 @@ func TestLoadMissingTweet(t *testing.T) { _, err := profile.GetTweetById(scraper.TweetID(6234234)) // Random number require.Error(t, err) - assert.ErrorIs(t, err, persistence.ErrNotInDB) + assert.ErrorIs(t, err, persistence.ErrNotInDatabase) } diff --git a/pkg/persistence/user_queries.go b/pkg/persistence/user_queries.go index 9758e6c..8c9238a 100644 --- a/pkg/persistence/user_queries.go +++ b/pkg/persistence/user_queries.go @@ -113,7 +113,7 @@ func (p Profile) GetUserByHandle(handle scraper.UserHandle) (scraper.User, error `, handle) if errors.Is(err, sql.ErrNoRows) { - return ret, ErrNotInDatabase{"User", handle} + return ret, ErrNotInDatabase } return ret, nil } @@ -136,7 +136,7 @@ func (p Profile) GetUserByID(id scraper.UserID) (scraper.User, error) { where id = ? `, id) if errors.Is(err, sql.ErrNoRows) { - return ret, ErrNotInDatabase{"User", id} + return ret, ErrNotInDatabase } if err != nil { panic(err) diff --git a/pkg/persistence/utils.go b/pkg/persistence/utils.go index 4302c31..8595da9 100644 --- a/pkg/persistence/utils.go +++ b/pkg/persistence/utils.go @@ -2,22 +2,12 @@ package persistence import ( "errors" - "fmt" "os" "regexp" "strings" ) -var NotInDatabase = errors.New("Not in database") - -type ErrNotInDatabase struct { - Table string - Value interface{} -} - -func (err ErrNotInDatabase) Error() string { - return fmt.Sprintf("Not in database: %s %q", err.Table, err.Value) -} +var ErrNotInDatabase = errors.New("not in database") // DUPE 1 func file_exists(path string) bool {