1 Star 0 Fork 0

吕冰 / influxdb

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
notification_endpoint.go 4.40 KB
一键复制 编辑 原始数据 按行查看 历史
package influxdb
import (
"context"
"encoding/json"
"errors"
"github.com/influxdata/influxdb/v2/kit/platform"
errors2 "github.com/influxdata/influxdb/v2/kit/platform/errors"
)
var (
// ErrInvalidNotificationEndpointType denotes that the provided NotificationEndpoint is not a valid type
ErrInvalidNotificationEndpointType = errors.New("unknown notification endpoint type")
)
// NotificationEndpoint is the configuration describing
// how to call a 3rd party service. E.g. Slack, Pagerduty
type NotificationEndpoint interface {
Valid() error
Type() string
json.Marshaler
CRUDLogSetter
SetID(id platform.ID)
SetOrgID(id platform.ID)
SetName(name string)
SetDescription(description string)
SetStatus(status Status)
GetID() platform.ID
GetCRUDLog() CRUDLog
GetOrgID() platform.ID
GetName() string
GetDescription() string
GetStatus() Status
// SecretFields return available secret fields.
SecretFields() []SecretField
// BackfillSecretKeys fill back fill the secret field key during the unmarshalling
// if value of that secret field is not nil.
BackfillSecretKeys()
}
// ops for checks error
var (
OpFindNotificationEndpointByID = "FindNotificationEndpointByID"
OpFindNotificationEndpoint = "FindNotificationEndpoint"
OpFindNotificationEndpoints = "FindNotificationEndpoints"
OpCreateNotificationEndpoint = "CreateNotificationEndpoint"
OpUpdateNotificationEndpoint = "UpdateNotificationEndpoint"
OpDeleteNotificationEndpoint = "DeleteNotificationEndpoint"
)
// NotificationEndpointFilter represents a set of filter that restrict the returned notification endpoints.
type NotificationEndpointFilter struct {
ID *platform.ID
OrgID *platform.ID
Org *string
UserResourceMappingFilter
}
// QueryParams Converts NotificationEndpointFilter fields to url query params.
func (f NotificationEndpointFilter) QueryParams() map[string][]string {
qp := map[string][]string{}
if f.OrgID != nil {
qp["orgID"] = []string{f.OrgID.String()}
}
if f.Org != nil {
qp["org"] = []string{*f.Org}
}
return qp
}
// NotificationEndpointUpdate is the set of upgrade fields for patch request.
type NotificationEndpointUpdate struct {
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
Status *Status `json:"status,omitempty"`
}
// Valid will verify if the NotificationEndpointUpdate is valid.
func (n *NotificationEndpointUpdate) Valid() error {
if n.Name != nil && *n.Name == "" {
return &errors2.Error{
Code: errors2.EInvalid,
Msg: "Notification Endpoint Name can't be empty",
}
}
if n.Description != nil && *n.Description == "" {
return &errors2.Error{
Code: errors2.EInvalid,
Msg: "Notification Endpoint Description can't be empty",
}
}
if n.Status != nil {
if err := n.Status.Valid(); err != nil {
return err
}
}
return nil
}
// NotificationEndpointService represents a service for managing notification endpoints.
type NotificationEndpointService interface {
// FindNotificationEndpointByID returns a single notification endpoint by ID.
FindNotificationEndpointByID(ctx context.Context, id platform.ID) (NotificationEndpoint, error)
// FindNotificationEndpoints returns a list of notification endpoints that match filter and the total count of matching notification endpoints.
// Additional options provide pagination & sorting.
FindNotificationEndpoints(ctx context.Context, filter NotificationEndpointFilter, opt ...FindOptions) ([]NotificationEndpoint, int, error)
// CreateNotificationEndpoint creates a new notification endpoint and sets b.ID with the new identifier.
CreateNotificationEndpoint(ctx context.Context, ne NotificationEndpoint, userID platform.ID) error
// UpdateNotificationEndpoint updates a single notification endpoint.
// Returns the new notification endpoint after update.
UpdateNotificationEndpoint(ctx context.Context, id platform.ID, nr NotificationEndpoint, userID platform.ID) (NotificationEndpoint, error)
// PatchNotificationEndpoint updates a single notification endpoint with changeset.
// Returns the new notification endpoint state after update.
PatchNotificationEndpoint(ctx context.Context, id platform.ID, upd NotificationEndpointUpdate) (NotificationEndpoint, error)
// DeleteNotificationEndpoint removes a notification endpoint by ID, returns secret fields, orgID for further deletion.
DeleteNotificationEndpoint(ctx context.Context, id platform.ID) (flds []SecretField, orgID platform.ID, err error)
}
Go
1
https://gitee.com/lyu_bing/influxdb.git
git@gitee.com:lyu_bing/influxdb.git
lyu_bing
influxdb
influxdb
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891