func (s *store) putFeed(feed types.Feed) error { items := feed.Items feed.Items = []types.Item{} info_bytes, err := json.Marshal(feed) if err != nil { return err } item_bytes, err := json.Marshal(items) if err != nil { return err } stmt, err := s.conn.Prepare("insert or replace into feed(id, type, json) values (?, ?, ?)") if err != nil { return err } s.conn.Begin() err = stmt.Exec(feed.Id, feed.Type, info_bytes) stmt.Finalize() if err != nil { s.conn.Rollback() return err } stmt, err = s.conn.Prepare("insert or replace into item(id, json) values (?, ?)") if err != nil { s.conn.Rollback() return err } err = stmt.Exec(feed.Id, item_bytes) stmt.Finalize() if err != nil { s.conn.Rollback() return err } s.conn.Commit() return nil }