aboutsummaryrefslogtreecommitdiff
path: root/internal/storage/enclosure.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <f@miniflux.net> 2023-09-08 22:45:17 -0700
committerGravatar Frédéric Guillot <f@miniflux.net> 2023-09-09 13:11:42 -0700
commit48f6885f4472efbe0e23f990ae8d4545f9a6a73d (patch)
treea05b35013e65f95013f90006b07870ddaeaf4065 /internal/storage/enclosure.go
parent32d33104a4934771ca99b1bcfe55bd0e4e88809b (diff)
downloadv2-48f6885f4472efbe0e23f990ae8d4545f9a6a73d.tar.gz
v2-48f6885f4472efbe0e23f990ae8d4545f9a6a73d.tar.zst
v2-48f6885f4472efbe0e23f990ae8d4545f9a6a73d.zip
Add generic webhook integration
Diffstat (limited to 'internal/storage/enclosure.go')
-rw-r--r--internal/storage/enclosure.go25
1 files changed, 12 insertions, 13 deletions
diff --git a/internal/storage/enclosure.go b/internal/storage/enclosure.go
index 8f8ef8e1..8eb1cea4 100644
--- a/internal/storage/enclosure.go
+++ b/internal/storage/enclosure.go
@@ -107,8 +107,10 @@ func (s *Storage) createEnclosure(tx *sql.Tx, enclosure *model.Enclosure) error
VALUES
($1, $2, $3, $4, $5, $6)
ON CONFLICT (user_id, entry_id, md5(url)) DO NOTHING
+ RETURNING
+ id
`
- _, err := tx.Exec(
+ if err := tx.QueryRow(
query,
enclosureURL,
enclosure.Size,
@@ -116,24 +118,22 @@ func (s *Storage) createEnclosure(tx *sql.Tx, enclosure *model.Enclosure) error
enclosure.EntryID,
enclosure.UserID,
enclosure.MediaProgression,
- )
-
- if err != nil {
- return fmt.Errorf(`store: unable to create enclosure: %v`, err)
+ ).Scan(&enclosure.ID); err != nil && err != sql.ErrNoRows {
+ return fmt.Errorf(`store: unable to create enclosure: %w`, err)
}
return nil
}
-func (s *Storage) updateEnclosures(tx *sql.Tx, userID, entryID int64, enclosures model.EnclosureList) error {
- if len(enclosures) == 0 {
+func (s *Storage) updateEnclosures(tx *sql.Tx, entry *model.Entry) error {
+ if len(entry.Enclosures) == 0 {
return nil
}
- sqlValues := []any{userID, entryID}
+ sqlValues := []any{entry.UserID, entry.ID}
sqlPlaceholders := []string{}
- for _, enclosure := range enclosures {
+ for _, enclosure := range entry.Enclosures {
sqlPlaceholders = append(sqlPlaceholders, fmt.Sprintf(`$%d`, len(sqlValues)+1))
sqlValues = append(sqlValues, strings.TrimSpace(enclosure.URL))
@@ -143,11 +143,10 @@ func (s *Storage) updateEnclosures(tx *sql.Tx, userID, entryID int64, enclosures
}
query := `
- DELETE FROM enclosures
+ DELETE FROM
+ enclosures
WHERE
- user_id=$1 AND
- entry_id=$2 AND
- url NOT IN (%s)
+ user_id=$1 AND entry_id=$2 AND url NOT IN (%s)
`
query = fmt.Sprintf(query, strings.Join(sqlPlaceholders, `,`))