From 8ffb773f43c8dc54801ca1d111854e7e881c93c9 Mon Sep 17 00:00:00 2001 From: Frédéric Guillot Date: Sun, 19 Nov 2017 21:10:04 -0800 Subject: First commit --- storage/enclosure.go | 68 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 storage/enclosure.go (limited to 'storage/enclosure.go') 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 +} -- cgit v1.2.3