ekster/pkg/server/null.go
Peter Stuifzand f14e6d8249
Some checks failed
continuous-integration/drone/push Build is failing
Add full text search to server
Adds Blevesearch to the server. Every item that is processed by the
server is added to the index and can be returned from the ItemSearch
request.
2021-05-30 22:01:34 +02:00

97 lines
2.6 KiB
Go

package server
import (
"p83.nl/go/ekster/pkg/microsub"
"p83.nl/go/ekster/pkg/sse"
)
// NullBackend is the simplest possible backend
type NullBackend struct {
}
// ChannelsGetList gets no channels
func (b *NullBackend) ChannelsGetList() ([]microsub.Channel, error) {
return []microsub.Channel{
{UID: "0001", Name: "notifications", Unread: microsub.Unread{Type: microsub.UnreadBool, Unread: false}},
{UID: "0000", Name: "default", Unread: microsub.Unread{Type: microsub.UnreadCount, UnreadCount: 0}},
}, nil
}
// ChannelsCreate creates no channels
func (b *NullBackend) ChannelsCreate(name string) (microsub.Channel, error) {
return microsub.Channel{
UID: "1234",
Name: name,
}, nil
}
// ChannelsUpdate updates no channels
func (b *NullBackend) ChannelsUpdate(uid, name string) (microsub.Channel, error) {
return microsub.Channel{
UID: uid,
Name: name,
}, nil
}
// ChannelsDelete delets no channels
func (b *NullBackend) ChannelsDelete(uid string) error {
return nil
}
// TimelineGet gets no timeline
func (b *NullBackend) TimelineGet(before, after, channel string) (microsub.Timeline, error) {
return microsub.Timeline{
Paging: microsub.Pagination{},
Items: []microsub.Item{},
}, nil
}
// FollowGetList implements the follow list command
func (b *NullBackend) FollowGetList(uid string) ([]microsub.Feed, error) {
return []microsub.Feed{
{Name: "test", Type: "feed", URL: "https://example.com/"},
}, nil
}
// FollowURL follows a new url
func (b *NullBackend) FollowURL(uid string, url string) (microsub.Feed, error) {
return microsub.Feed{Type: "feed", URL: url}, nil
}
// UnfollowURL unfollows a url
func (b *NullBackend) UnfollowURL(uid string, url string) error {
return nil
}
// Search search for a query and return an example list of feeds
func (b *NullBackend) Search(query string) ([]microsub.Feed, error) {
return []microsub.Feed{
{Type: "feed", URL: "https://example.com/", Name: "Example", Photo: "test.jpg", Description: "test"},
}, nil
}
// ItemSearch returns a list of zero items
func (b *NullBackend) ItemSearch(channel, query string) ([]microsub.Item, error) {
return []microsub.Item{}, nil
}
// PreviewURL shows an empty feed
func (b *NullBackend) PreviewURL(url string) (microsub.Timeline, error) {
return microsub.Timeline{
Paging: microsub.Pagination{},
Items: []microsub.Item{},
}, nil
}
// MarkRead marks no items as read
func (b *NullBackend) MarkRead(channel string, uids []string) error {
return nil
}
// Events returns a closed channel.
func (b *NullBackend) Events() (chan sse.Message, error) {
ch := make(chan sse.Message)
close(ch)
return ch, nil
}