offline-twitter/persistence/retweet_queries.go
2021-08-16 20:37:35 -07:00

50 lines
1.0 KiB
Go

package persistence
import (
"time"
"offline_twitter/scraper"
)
/**
* Save a Retweet. Do nothing if it already exists, because none of its parameters are modifiable.
*/
func (p Profile) SaveRetweet(r scraper.Retweet) error {
_, err := p.DB.Exec(`
insert into retweets (retweet_id, tweet_id, retweeted_by, retweeted_at)
values (?, ?, ?, ?)
on conflict do nothing
`,
r.RetweetID, r.TweetID, r.RetweetedByID, r.RetweetedAt.Unix(),
)
return err
}
/**
* Retrieve a Retweet by ID
*/
func (p Profile) GetRetweetById(id scraper.TweetID) (scraper.Retweet, error) {
stmt, err := p.DB.Prepare(`
select retweet_id, tweet_id, retweeted_by, retweeted_at
from retweets
where retweet_id = ?
`)
if err != nil {
return scraper.Retweet{}, err
}
defer stmt.Close()
var r scraper.Retweet
var retweeted_at int
row := stmt.QueryRow(id)
err = row.Scan(&r.RetweetID, &r.TweetID, &r.RetweetedByID, &retweeted_at)
if err != nil {
return scraper.Retweet{}, err
}
r.RetweetedAt = time.Unix(int64(retweeted_at), 0)
return r, nil
}