aboutsummaryrefslogtreecommitdiffhomepage
path: root/storage/enclosure.go
diff options
context:
space:
mode:
Diffstat (limited to 'storage/enclosure.go')
-rw-r--r--storage/enclosure.go68
1 files changed, 68 insertions, 0 deletions
diff --git a/storage/enclosure.go b/storage/enclosure.go
new file mode 100644
index 0000000..ac85cb7
--- /dev/null
+++ b/storage/enclosure.go
@@ -0,0 +1,68 @@
+// Copyright 2017 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+
+package storage
+
+import (
+ "fmt"
+ "github.com/miniflux/miniflux2/model"
+)
+
+func (s *Storage) GetEnclosures(entryID int64) (model.EnclosureList, error) {
+ query := `SELECT
+ id, user_id, entry_id, url, size, mime_type
+ FROM enclosures
+ WHERE entry_id = $1 ORDER BY id ASC`
+
+ rows, err := s.db.Query(query, entryID)
+ if err != nil {
+ return nil, fmt.Errorf("Unable to get enclosures: %v", err)
+ }
+ defer rows.Close()
+
+ enclosures := make(model.EnclosureList, 0)
+ for rows.Next() {
+ var enclosure model.Enclosure
+ err := rows.Scan(
+ &enclosure.ID,
+ &enclosure.UserID,
+ &enclosure.EntryID,
+ &enclosure.URL,
+ &enclosure.Size,
+ &enclosure.MimeType,
+ )
+
+ if err != nil {
+ return nil, fmt.Errorf("Unable to fetch enclosure row: %v", err)
+ }
+
+ enclosures = append(enclosures, &enclosure)
+ }
+
+ return enclosures, nil
+}
+
+func (s *Storage) CreateEnclosure(enclosure *model.Enclosure) error {
+ query := `
+ INSERT INTO enclosures
+ (url, size, mime_type, entry_id, user_id)
+ VALUES
+ ($1, $2, $3, $4, $5)
+ RETURNING id
+ `
+ err := s.db.QueryRow(
+ query,
+ enclosure.URL,
+ enclosure.Size,
+ enclosure.MimeType,
+ enclosure.EntryID,
+ enclosure.UserID,
+ ).Scan(&enclosure.ID)
+
+ if err != nil {
+ return fmt.Errorf("Unable to create enclosure: %v", err)
+ }
+
+ return nil
+}