From 222e68183606758e25462e5b7e71a724b70856a1 Mon Sep 17 00:00:00 2001 From: Alessio Date: Wed, 28 Jul 2021 15:56:47 -0700 Subject: [PATCH] Create DB queries for media attachments, refactor this out of the tweet query into separate functions --- persistence/media_queries.go | 59 ++++++++++++++++++++++++++++++++++++ persistence/tweet_queries.go | 58 ++++------------------------------- 2 files changed, 65 insertions(+), 52 deletions(-) create mode 100644 persistence/media_queries.go diff --git a/persistence/media_queries.go b/persistence/media_queries.go new file mode 100644 index 0000000..869b1c8 --- /dev/null +++ b/persistence/media_queries.go @@ -0,0 +1,59 @@ +package persistence + +import ( + "database/sql" + + "offline_twitter/scraper" +) + +/** + * Get the list of images for a tweet + */ +func (p Profile) GetImagesForTweet(t scraper.Tweet) (imgs []scraper.Image, err error) { + stmt, err := p.DB.Prepare("select filename, is_downloaded from images where tweet_id=?") + if err != nil { + return + } + defer stmt.Close() + rows, err := stmt.Query(t.ID) + if err != nil { + return + } + var img scraper.Image + + for rows.Next() { + err = rows.Scan(&img.Filename, &img.IsDownloaded) + if err != nil { + return + } + img.TweetID = t.ID + imgs = append(imgs, img) + } + return +} + + +/** + * Get the list of videos for a tweet + */ +func (p Profile) GetVideosForTweet(t scraper.Tweet) (vids []scraper.Video, err error) { + stmt, err := p.DB.Prepare("select filename, is_downloaded from videos where tweet_id=?") + if err != nil { + return + } + defer stmt.Close() + rows, err := stmt.Query(t.ID) + if err != nil { + return + } + var vid scraper.Video + for rows.Next() { + err = rows.Scan(&vid.Filename, &vid.IsDownloaded) + if err != nil { + return + } + vid.TweetID = t.ID + vids = append(vids, vid) + } + return +} diff --git a/persistence/tweet_queries.go b/persistence/tweet_queries.go index 2750442..725a990 100644 --- a/persistence/tweet_queries.go +++ b/persistence/tweet_queries.go @@ -79,56 +79,6 @@ func (p Profile) IsTweetInDatabase(id scraper.TweetID) bool { return true } -func (p Profile) attach_images(t *scraper.Tweet) error { - println("Attaching images") - stmt, err := p.DB.Prepare("select filename, is_downloaded from images where tweet_id = ?") - if err != nil { - return err - } - defer stmt.Close() - rows, err := stmt.Query(t.ID) - if err != nil { - return err - } - var filename string - var is_downloaded bool - for rows.Next() { - err = rows.Scan(&filename, &is_downloaded) - if err != nil { - return err - } - new_img := scraper.Image{TweetID: t.ID, Filename: filename, IsDownloaded: is_downloaded} - t.Images = append(t.Images, new_img) - fmt.Printf("%v\n", t.Images) - } - return nil -} - -func (p Profile) attach_videos(t *scraper.Tweet) error { - println("Attaching videos") - stmt, err := p.DB.Prepare("select filename, is_downloaded from videos where tweet_id = ?") - if err != nil { - return err - } - defer stmt.Close() - rows, err := stmt.Query(t.ID) - if err != nil { - return err - } - var filename string - var is_downloaded bool - for rows.Next() { - err = rows.Scan(&filename, &is_downloaded) - if err != nil { - return err - } - new_video := scraper.Video{TweetID: t.ID, Filename: filename, IsDownloaded: is_downloaded} - t.Videos = append(t.Videos, new_video) - fmt.Printf("%v\n", t.Videos) - } - return nil -} - func (p Profile) attach_urls(t *scraper.Tweet) error { println("Attaching urls") stmt, err := p.DB.Prepare("select text from urls where tweet_id = ?") @@ -187,14 +137,18 @@ func (p Profile) GetTweetById(id scraper.TweetID) (scraper.Tweet, error) { t.ID = scraper.TweetID(fmt.Sprint(tweet_id)) t.UserID = scraper.UserID(fmt.Sprint(user_id)) - err = p.attach_images(&t) + imgs, err := p.GetImagesForTweet(t) if err != nil { return t, err } - err = p.attach_videos(&t) + t.Images = imgs + + vids, err := p.GetVideosForTweet(t) if err != nil { return t, err } + t.Videos = vids + err = p.attach_urls(&t) return t, err }