mirror of https://github.com/grafana/grafana
Alerting: isolate ImageStore in notify package (#60353)
parent
286af5a53b
commit
de008005ce
@ -0,0 +1,26 @@ |
||||
package channels |
||||
|
||||
import ( |
||||
"context" |
||||
"errors" |
||||
"time" |
||||
) |
||||
|
||||
var ( |
||||
ErrImageNotFound = errors.New("image not found") |
||||
) |
||||
|
||||
type Image struct { |
||||
Token string |
||||
Path string |
||||
URL string |
||||
CreatedAt time.Time |
||||
} |
||||
|
||||
func (i Image) HasURL() bool { |
||||
return i.URL != "" |
||||
} |
||||
|
||||
type ImageStore interface { |
||||
GetImage(ctx context.Context, token string) (*Image, error) |
||||
} |
@ -0,0 +1,39 @@ |
||||
package notifier |
||||
|
||||
import ( |
||||
"context" |
||||
"errors" |
||||
|
||||
"github.com/grafana/grafana/pkg/services/ngalert/models" |
||||
"github.com/grafana/grafana/pkg/services/ngalert/notifier/channels" |
||||
"github.com/grafana/grafana/pkg/services/ngalert/store" |
||||
) |
||||
|
||||
type imageStore struct { |
||||
store store.ImageStore |
||||
} |
||||
|
||||
func newImageStore(store store.ImageStore) channels.ImageStore { |
||||
return &imageStore{ |
||||
store: store, |
||||
} |
||||
} |
||||
|
||||
func (i imageStore) GetImage(ctx context.Context, token string) (*channels.Image, error) { |
||||
image, err := i.store.GetImage(ctx, token) |
||||
if err != nil { |
||||
if errors.Is(err, models.ErrImageNotFound) { |
||||
err = channels.ErrImageNotFound |
||||
} |
||||
} |
||||
var result *channels.Image |
||||
if image != nil { |
||||
result = &channels.Image{ |
||||
Token: image.Token, |
||||
Path: image.Path, |
||||
URL: image.URL, |
||||
CreatedAt: image.CreatedAt, |
||||
} |
||||
} |
||||
return result, err |
||||
} |
Loading…
Reference in new issue