diff --git a/storage.go b/storage.go index 69c786a..1eb0cb5 100644 --- a/storage.go +++ b/storage.go @@ -3,7 +3,6 @@ package main import ( "context" "encoding/json" - "errors" "fmt" "strings" @@ -43,7 +42,9 @@ func NewStorage(ctx context.Context, driver Driver) (Storage, error) { } func (s Storage) GetEvent(ctx context.Context, ID string) (model.Event, error) { - return model.Event{}, errors.New("not impl") + v := model.Event{} + err := s.selectOne(ctx, "events", &v, "ID = ?", ID) + return v, err } func (s Storage) UpsertEvent(ctx context.Context, event model.Event) error { @@ -61,7 +62,9 @@ func (s Storage) UpsertMessage(ctx context.Context, message model.Message) error } func (s Storage) GetThread(ctx context.Context, ID string) (model.Thread, error) { - return model.Thread{}, errors.New("not impl") + v := model.Thread{} + err := s.selectOne(ctx, "threads", &v, "ID = ?", ID) + return v, err } func (s Storage) UpsertThread(ctx context.Context, thread model.Thread) error { diff --git a/storage_test.go b/storage_test.go index 4581214..2c85c97 100644 --- a/storage_test.go +++ b/storage_test.go @@ -17,6 +17,53 @@ func TestStorage(t *testing.T) { t.Fatal(err) } + t.Run("upsert get event", func(t *testing.T) { + m := model.NewEvent( + "ID", + "URL", + 1, + "Name", + "Asset", + "Datacenter", + "Team", + true, + ) + + if err := s.UpsertEvent(ctx, m); err != nil { + t.Fatal("unexpected error on insert:", err) + } else if err := s.UpsertEvent(ctx, m); err != nil { + t.Fatal("unexpected error on noop update:", err) + } + + if got, err := s.GetEvent(ctx, m.ID); err != nil { + t.Fatal("unexpected error on get:", err) + } else if got != m { + t.Fatal("unexpected result from get:", got) + } + }) + + t.Run("upsert get thread", func(t *testing.T) { + m := model.NewThread( + "ID", + "URL", + 1, + "Channel", + "EventID", + ) + + if err := s.UpsertThread(ctx, m); err != nil { + t.Fatal("unexpected error on insert:", err) + } else if err := s.UpsertThread(ctx, m); err != nil { + t.Fatal("unexpected error on noop update:", err) + } + + if got, err := s.GetThread(ctx, m.ID); err != nil { + t.Fatal("unexpected error on get:", err) + } else if got != m { + t.Fatal("unexpected result from get:", got) + } + }) + t.Run("upsert get message", func(t *testing.T) { m := model.NewMessage( "ID",