parent
f87c2194c8
commit
c801e74db3
@ -0,0 +1,51 @@
|
||||
package boltbackend
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/boltdb/bolt"
|
||||
"github.com/gorilla/feeds"
|
||||
)
|
||||
|
||||
// BoltBackend is a Bolt-powered storage backend for bacheca
|
||||
type BoltBackend struct {
|
||||
db *bolt.DB
|
||||
}
|
||||
|
||||
// MakeBoltBackend returns a BoltBackend instance
|
||||
func MakeBoltBackend(path string) (*BoltBackend, error) {
|
||||
db, err := bolt.Open(path, 0600, nil)
|
||||
return &BoltBackend{
|
||||
db: db,
|
||||
}, err
|
||||
}
|
||||
|
||||
// Close closes the underlying bolt handler
|
||||
func (b *BoltBackend) Close() error {
|
||||
return b.db.Close()
|
||||
}
|
||||
|
||||
// GetFeed returns the whole feed
|
||||
func (b *BoltBackend) GetFeed() (*feeds.Feed, error) {
|
||||
return nil, errors.New("not implemented")
|
||||
}
|
||||
|
||||
// AddItem adds an item to the feed
|
||||
func (b *BoltBackend) AddItem(item feeds.Item) (string, error) {
|
||||
return "", errors.New("not implemented")
|
||||
}
|
||||
|
||||
// RemoveItem removes an item by ID
|
||||
func (b *BoltBackend) RemoveItem(id string) error {
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
// ReplaceItem replaces the item at a specified ID with the data provided
|
||||
func (b *BoltBackend) ReplaceItem(id string, item feeds.Item) error {
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
// SetInfo sets the feed metadata (like title and description)
|
||||
func (b *BoltBackend) SetInfo(info feeds.Feed) error {
|
||||
return errors.New("not implemented")
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
package filebackend
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
|
||||
"github.com/gorilla/feeds"
|
||||
)
|
||||
|
||||
// FileBackend is a file-based storage backend for bacheca
|
||||
type FileBackend struct {
|
||||
path string
|
||||
}
|
||||
|
||||
// MakeFileBackend returns a FileBackend instance
|
||||
func MakeFileBackend(path string) (*FileBackend, error) {
|
||||
stat, err := os.Stat(path)
|
||||
if err == nil && stat.IsDir() {
|
||||
return nil, errors.New("file backend must be a file")
|
||||
}
|
||||
return &FileBackend{
|
||||
path: path,
|
||||
}, err
|
||||
}
|
||||
|
||||
// GetFeed returns the whole feed
|
||||
func (b *FileBackend) GetFeed() (*feeds.Feed, error) {
|
||||
return nil, errors.New("not implemented")
|
||||
}
|
||||
|
||||
// AddItem adds an item to the feed
|
||||
func (b *FileBackend) AddItem(item feeds.Item) (string, error) {
|
||||
return "", errors.New("not implemented")
|
||||
}
|
||||
|
||||
// RemoveItem removes an item by ID
|
||||
func (b *FileBackend) RemoveItem(id string) error {
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
// ReplaceItem replaces the item at a specified ID with the data provided
|
||||
func (b *FileBackend) ReplaceItem(id string, item feeds.Item) error {
|
||||
return errors.New("not implemented")
|
||||
}
|
||||
|
||||
// SetInfo sets the feed metadata (like title and description)
|
||||
func (b *FileBackend) SetInfo(info feeds.Feed) error {
|
||||
return errors.New("not implemented")
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
package storage
|
||||
|
||||
import "github.com/gorilla/feeds"
|
||||
|
||||
// Backend is a storage backend for bacheca
|
||||
type Backend interface {
|
||||
// GetFeed returns the whole feed
|
||||
GetFeed() (*feeds.Feed, error)
|
||||
|
||||
// AddItem adds an item to the feed
|
||||
// If an ID is not specified, one will be generated randomly
|
||||
// The return value is the ID, generated or provided
|
||||
AddItem(item feeds.Item) (string, error)
|
||||
|
||||
// RemoveItem removes an item by ID
|
||||
RemoveItem(id string) error
|
||||
|
||||
// ReplaceItem replaces the item at a specified ID with the data provided
|
||||
ReplaceItem(id string, item feeds.Item) error
|
||||
|
||||
// SetInfo sets the feed metadata (like title and description)
|
||||
SetInfo(info feeds.Feed) error
|
||||
}
|
Loading…
Reference in new issue