bulk-insert items

This commit is contained in:
Nazar Kanaev
2020-06-22 23:14:06 +01:00
committed by nkanaev
parent 61ed9aabf9
commit 7abe2a8c05
3 changed files with 82 additions and 3 deletions

View File

@@ -9,7 +9,7 @@ const (
)
type Item struct {
Id int64
Id string
FeedId int64
Title string
Link string
@@ -23,5 +23,36 @@ type Item struct {
}
func (s *Storage) CreateItems(items []Item) bool {
tx, err := s.db.Begin()
if err != nil {
s.log.Print(err)
return false
}
for _, item := range items {
_, err = tx.Exec(`
insert into items (
id, feed_id, title, link, description,
content, author, date, date_updated, status, image
)
values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
on conflict (id) do update set date_updated=?`,
item.Id, item.FeedId, item.Title, item.Link, item.Description,
item.Content, item.Author, item.Date, item.DateUpdated, UNREAD, item.Image,
// upsert values
item.DateUpdated,
)
if err != nil {
s.log.Print(err)
if err = tx.Rollback(); err != nil {
s.log.Print(err)
return false
}
return false
}
}
if err = tx.Commit(); err != nil {
s.log.Print(err)
return false
}
return true
}