Simply ErrNotInDatabase implementation
This commit is contained in:
parent
a13f47e508
commit
2d35c37e17
@ -32,7 +32,7 @@ func (app *Application) ensure_tweet(id scraper.TweetID, is_forced bool, is_conv
|
|||||||
// Check if tweet is already in DB
|
// Check if tweet is already in DB
|
||||||
tweet, err := app.Profile.GetTweetById(id)
|
tweet, err := app.Profile.GetTweetById(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, persistence.ErrNotInDB) {
|
if errors.Is(err, persistence.ErrNotInDatabase) {
|
||||||
is_needing_scrape = true
|
is_needing_scrape = true
|
||||||
is_available = false
|
is_available = false
|
||||||
} else {
|
} 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)
|
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
|
data.TweetDetailView = twt_detail
|
||||||
|
|
||||||
|
@ -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
|
// 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") {
|
if user.PinnedTweetID != scraper.TweetID(0) && (len(parts) <= 1 || parts[1] == "without_replies") {
|
||||||
data.PinnedTweet, err = app.Profile.GetTweetById(user.PinnedTweetID)
|
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)
|
panic(err)
|
||||||
}
|
}
|
||||||
feed.TweetTrove.Tweets[data.PinnedTweet.ID] = data.PinnedTweet
|
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
|
// Fetch quoted tweet if necessary
|
||||||
if data.PinnedTweet.QuotedTweetID != scraper.TweetID(0) {
|
if data.PinnedTweet.QuotedTweetID != scraper.TweetID(0) {
|
||||||
feed.TweetTrove.Tweets[data.PinnedTweet.QuotedTweetID], err = app.Profile.GetTweetById(data.PinnedTweet.QuotedTweetID)
|
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)
|
panic(err)
|
||||||
}
|
}
|
||||||
// And the user
|
// And the user
|
||||||
|
@ -11,7 +11,6 @@ import (
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
ErrEndOfFeed = errors.New("end of feed")
|
ErrEndOfFeed = errors.New("end of feed")
|
||||||
ErrNotInDB = errors.New("not in database")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO: make this a SQL view?
|
// TODO: make this a SQL view?
|
||||||
@ -257,7 +256,7 @@ func (p Profile) GetTweetDetail(id TweetID, current_user_id UserID) (TweetDetail
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
if len(thread) == 0 {
|
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 {
|
for _, tweet := range thread {
|
||||||
ret.Tweets[tweet.ID] = tweet
|
ret.Tweets[tweet.ID] = tweet
|
||||||
|
@ -84,7 +84,7 @@ func (p Profile) GetListById(list_id ListID) (List, error) {
|
|||||||
var ret List
|
var ret List
|
||||||
err := p.DB.Get(&ret, `select rowid, is_online, online_list_id, name from lists where rowid = ?`, list_id)
|
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) {
|
if errors.Is(err, sql.ErrNoRows) {
|
||||||
return List{}, ErrNotInDatabase{"List", list_id}
|
return List{}, ErrNotInDatabase
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -133,7 +133,7 @@ func (p Profile) GetTweetById(id TweetID) (Tweet, error) {
|
|||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, sql.ErrNoRows) {
|
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 {
|
} else {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -334,5 +334,5 @@ func TestLoadMissingTweet(t *testing.T) {
|
|||||||
|
|
||||||
_, err := profile.GetTweetById(scraper.TweetID(6234234)) // Random number
|
_, err := profile.GetTweetById(scraper.TweetID(6234234)) // Random number
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
assert.ErrorIs(t, err, persistence.ErrNotInDB)
|
assert.ErrorIs(t, err, persistence.ErrNotInDatabase)
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ func (p Profile) GetUserByHandle(handle scraper.UserHandle) (scraper.User, error
|
|||||||
`, handle)
|
`, handle)
|
||||||
|
|
||||||
if errors.Is(err, sql.ErrNoRows) {
|
if errors.Is(err, sql.ErrNoRows) {
|
||||||
return ret, ErrNotInDatabase{"User", handle}
|
return ret, ErrNotInDatabase
|
||||||
}
|
}
|
||||||
return ret, nil
|
return ret, nil
|
||||||
}
|
}
|
||||||
@ -136,7 +136,7 @@ func (p Profile) GetUserByID(id scraper.UserID) (scraper.User, error) {
|
|||||||
where id = ?
|
where id = ?
|
||||||
`, id)
|
`, id)
|
||||||
if errors.Is(err, sql.ErrNoRows) {
|
if errors.Is(err, sql.ErrNoRows) {
|
||||||
return ret, ErrNotInDatabase{"User", id}
|
return ret, ErrNotInDatabase
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -2,22 +2,12 @@ package persistence
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
|
||||||
"os"
|
"os"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var NotInDatabase = errors.New("Not in database")
|
var ErrNotInDatabase = 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)
|
|
||||||
}
|
|
||||||
|
|
||||||
// DUPE 1
|
// DUPE 1
|
||||||
func file_exists(path string) bool {
|
func file_exists(path string) bool {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user