mirror of
https://github.com/miniflux/v2.git
synced 2025-08-06 17:41:00 +00:00
Add Pinboard integration
This commit is contained in:
parent
2f1367a8d4
commit
2356ddad28
28 changed files with 550 additions and 49 deletions
78
storage/integration.go
Normal file
78
storage/integration.go
Normal file
|
@ -0,0 +1,78 @@
|
|||
// 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 (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
|
||||
"github.com/miniflux/miniflux2/model"
|
||||
)
|
||||
|
||||
// Integration returns user integration settings.
|
||||
func (s *Storage) Integration(userID int64) (*model.Integration, error) {
|
||||
query := `SELECT
|
||||
user_id,
|
||||
pinboard_enabled,
|
||||
pinboard_token,
|
||||
pinboard_tags,
|
||||
pinboard_mark_as_unread
|
||||
FROM integrations
|
||||
WHERE user_id=$1
|
||||
`
|
||||
var integration model.Integration
|
||||
err := s.db.QueryRow(query, userID).Scan(
|
||||
&integration.UserID,
|
||||
&integration.PinboardEnabled,
|
||||
&integration.PinboardToken,
|
||||
&integration.PinboardTags,
|
||||
&integration.PinboardMarkAsUnread,
|
||||
)
|
||||
switch {
|
||||
case err == sql.ErrNoRows:
|
||||
return nil, nil
|
||||
case err != nil:
|
||||
return nil, fmt.Errorf("unable to fetch integration row: %v", err)
|
||||
}
|
||||
|
||||
return &integration, nil
|
||||
}
|
||||
|
||||
// UpdateIntegration saves user integration settings.
|
||||
func (s *Storage) UpdateIntegration(integration *model.Integration) error {
|
||||
query := `
|
||||
UPDATE integrations SET
|
||||
pinboard_enabled=$1,
|
||||
pinboard_token=$2,
|
||||
pinboard_tags=$3,
|
||||
pinboard_mark_as_unread=$4
|
||||
WHERE user_id=$5
|
||||
`
|
||||
_, err := s.db.Exec(
|
||||
query,
|
||||
integration.PinboardEnabled,
|
||||
integration.PinboardToken,
|
||||
integration.PinboardTags,
|
||||
integration.PinboardMarkAsUnread,
|
||||
integration.UserID,
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to update integration row: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateIntegration creates initial user integration settings.
|
||||
func (s *Storage) CreateIntegration(userID int64) error {
|
||||
query := `INSERT INTO integrations (user_id) VALUES ($1)`
|
||||
_, err := s.db.Exec(query, userID)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to create integration row: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue