-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathretriever.go
41 lines (31 loc) · 835 Bytes
/
retriever.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package incata
import (
"errors"
"github.com/mantzas/incata/model"
"github.com/mantzas/incata/reader"
"github.com/satori/go.uuid"
)
// Retriever interface
type Retriever interface {
Retrieve(uuid.UUID) ([]model.Event, error)
}
// EventRetriever Append events to storage
type EventRetriever struct {
Reader reader.Reader
}
var rd reader.Reader
// SetupRetriever setting up the retriever
func SetupRetriever(reader reader.Reader) {
rd = reader
}
// NewRetriever creates a new event retriever
func NewRetriever() (*EventRetriever, error) {
if rd == nil {
return nil, errors.New("retriever is not set up!")
}
return &EventRetriever{Reader: rd}, nil
}
// Retrieve events based on Source ID
func (appender *EventRetriever) Retrieve(sourceID uuid.UUID) ([]model.Event, error) {
return appender.Reader.Read(sourceID)
}