Documentation
¶
Index ¶
- Constants
- func IsMeterNotFoundError(err error) bool
- func NewErrInvalidEvent(err error) error
- func NewErrInvalidMeter(err error) error
- func NewMeterNotFoundError(meterSlug string) error
- type CreateMeterInput
- type DeleteMeterInput
- type ErrInvalidEvent
- type ErrInvalidMeter
- type GetMeterInput
- type ListMetersParams
- type ManageService
- type Meter
- type MeterAggregation
- type MeterCreateEvent
- type MeterDeleteEvent
- type MeterNotFoundError
- type MeterQueryRow
- type MeterUpdateEvent
- type OrderBy
- type ParsedEvent
- type PreUpdateMeterHook
- type Service
- type UpdateMeterInput
- type WindowSize
Constants ¶
const ( MeterEventSubsystem metadata.EventSubsystem = "meter" MeterCreateEventName metadata.EventName = "meter.created" MeterUpdateEventName metadata.EventName = "meter.updated" MeterDeleteEventName metadata.EventName = "meter.deleted" )
Variables ¶
This section is empty.
Functions ¶
func IsMeterNotFoundError ¶
IsMeterNotFoundError returns true if the error is a MeterNotFoundError.
func NewErrInvalidEvent ¶
func NewErrInvalidMeter ¶
func NewMeterNotFoundError ¶
NewMeterNotFoundError returns a new MeterNotFoundError.
Types ¶
type CreateMeterInput ¶
type CreateMeterInput struct {
Namespace string
Name string
Key string
Description *string
Aggregation MeterAggregation
EventType string
EventFrom *time.Time
ValueProperty *string
GroupBy map[string]string
}
CreateMeterInput is a parameter object for creating a meter.
func (CreateMeterInput) Validate ¶
func (i CreateMeterInput) Validate() error
Validate validates the create meter input.
type DeleteMeterInput ¶
DeleteMeterInput is a parameter object for deleting a meter.
func (DeleteMeterInput) Validate ¶
func (i DeleteMeterInput) Validate() error
Validate validates the delete meter input.
type ErrInvalidEvent ¶
type ErrInvalidEvent struct {
// contains filtered or unexported fields
}
func (ErrInvalidEvent) Error ¶
func (e ErrInvalidEvent) Error() string
func (ErrInvalidEvent) Unwrap ¶
func (e ErrInvalidEvent) Unwrap() error
type ErrInvalidMeter ¶
type ErrInvalidMeter struct {
// contains filtered or unexported fields
}
func (ErrInvalidMeter) Error ¶
func (e ErrInvalidMeter) Error() string
func (ErrInvalidMeter) Unwrap ¶
func (e ErrInvalidMeter) Unwrap() error
type GetMeterInput ¶
GetMeterInput is a parameter object for getting a meter.
func (GetMeterInput) Validate ¶
func (i GetMeterInput) Validate() error
Validate validates the get meter input.
type ListMetersParams ¶
type ListMetersParams struct {
pagination.Page
OrderBy OrderBy
Order sortx.Order
Namespace string
SlugFilter *[]string
// WithoutNamespace is a flag to list meters without a namespace.
// We do this instead of letting the namespace be empty to avoid
// accidental listing of all meters across all namespaces.
WithoutNamespace bool
// IncludeDeleted is a flag to include deleted meters in the list.
IncludeDeleted bool
}
ListMetersParams is a parameter object for listing meters.
func (ListMetersParams) Validate ¶
func (p ListMetersParams) Validate() error
Validate validates the list meters parameters.
type ManageService ¶
type ManageService interface {
Service
CreateMeter(ctx context.Context, input CreateMeterInput) (Meter, error)
UpdateMeter(ctx context.Context, input UpdateMeterInput) (Meter, error)
DeleteMeter(ctx context.Context, input DeleteMeterInput) error
// Observer hooks
// Useful to coordinate with other services
RegisterPreUpdateMeterHook(hook PreUpdateMeterHook) error
}
ManageService is an interface to manage meter service.
type Meter ¶
type Meter struct {
models.ManagedResource `mapstructure:",squash"`
Key string `mapstructure:"slug"`
Aggregation MeterAggregation
EventType string
EventFrom *time.Time
ValueProperty *string
GroupBy map[string]string
}
Meter is the meter model
type MeterAggregation ¶
type MeterAggregation string
const ( MeterAggregationSum MeterAggregation = "SUM" MeterAggregationCount MeterAggregation = "COUNT" MeterAggregationAvg MeterAggregation = "AVG" MeterAggregationMin MeterAggregation = "MIN" MeterAggregationMax MeterAggregation = "MAX" MeterAggregationUniqueCount MeterAggregation = "UNIQUE_COUNT" MeterAggregationLatest MeterAggregation = "LATEST" )
Note: keep values up to date in the meter package
func (MeterAggregation) IsValid ¶
func (MeterAggregation) IsValid(input string) bool
func (MeterAggregation) Values ¶
func (MeterAggregation) Values() (kinds []string)
Values provides list valid values for Enum
type MeterCreateEvent ¶
type MeterCreateEvent struct {
Meter *Meter `json:"meter"`
UserID *string `json:"userId,omitempty"`
}
MeterCreateEvent is an event that is emitted when a meter is created
func NewMeterCreateEvent ¶
func NewMeterCreateEvent(ctx context.Context, meter *Meter) MeterCreateEvent
NewMeterCreateEvent creates a new meter create event
func (MeterCreateEvent) EventMetadata ¶
func (e MeterCreateEvent) EventMetadata() metadata.EventMetadata
func (MeterCreateEvent) EventName ¶
func (e MeterCreateEvent) EventName() string
func (MeterCreateEvent) Validate ¶
func (e MeterCreateEvent) Validate() error
type MeterDeleteEvent ¶
type MeterDeleteEvent struct {
Meter *Meter `json:"meter"`
UserID *string `json:"userId,omitempty"`
}
MeterDeleteEvent is an event that is emitted when a meter is deleted
func NewMeterDeleteEvent ¶
func NewMeterDeleteEvent(ctx context.Context, meter *Meter) MeterDeleteEvent
NewMeterDeleteEvent creates a new meter delete event
func (MeterDeleteEvent) EventMetadata ¶
func (e MeterDeleteEvent) EventMetadata() metadata.EventMetadata
func (MeterDeleteEvent) EventName ¶
func (e MeterDeleteEvent) EventName() string
func (MeterDeleteEvent) Validate ¶
func (e MeterDeleteEvent) Validate() error
type MeterNotFoundError ¶
type MeterNotFoundError struct {
// contains filtered or unexported fields
}
MeterNotFoundError is returned when a meter is not found.
func (*MeterNotFoundError) Error ¶
func (e *MeterNotFoundError) Error() string
Error returns the error message.
func (*MeterNotFoundError) Unwrap ¶
func (e *MeterNotFoundError) Unwrap() error
Unwrap returns the wrapped error.
type MeterQueryRow ¶
type MeterQueryRow struct {
Value float64 `json:"value"`
WindowStart time.Time `json:"windowStart"`
WindowEnd time.Time `json:"windowEnd"`
Subject *string `json:"subject"`
CustomerID *string `json:"customerId"`
GroupBy map[string]*string `json:"groupBy"`
}
MeterQueryRow returns a single row from the meter dataset.
type MeterUpdateEvent ¶
type MeterUpdateEvent struct {
Meter *Meter `json:"meter"`
UserID *string `json:"userId,omitempty"`
}
MeterUpdateEvent is an event that is emitted when a meter is updated
func NewMeterUpdateEvent ¶
func NewMeterUpdateEvent(ctx context.Context, meter *Meter) MeterUpdateEvent
NewMeterUpdateEvent creates a new meter update event
func (MeterUpdateEvent) EventMetadata ¶
func (e MeterUpdateEvent) EventMetadata() metadata.EventMetadata
func (MeterUpdateEvent) EventName ¶
func (e MeterUpdateEvent) EventName() string
func (MeterUpdateEvent) Validate ¶
func (e MeterUpdateEvent) Validate() error
type ParsedEvent ¶
func ParseEvent ¶
func ParseEvent(meter Meter, data []byte) (*ParsedEvent, error)
ParseEvent validates and parses an event against a meter.
func ParseEventString ¶
func ParseEventString(meter Meter, data string) (*ParsedEvent, error)
type PreUpdateMeterHook ¶
type PreUpdateMeterHook = func(context.Context, UpdateMeterInput) error
PreUpdateMeterHook is a hook function to be called before updating a meter.
type Service ¶
type Service interface {
ListMeters(ctx context.Context, params ListMetersParams) (pagination.PagedResponse[Meter], error)
GetMeterByIDOrSlug(ctx context.Context, input GetMeterInput) (Meter, error)
}
Meter is an interface for the meter service.
type UpdateMeterInput ¶
type UpdateMeterInput struct {
ID models.NamespacedID
Name string
Description *string
GroupBy map[string]string
}
UpdateMeterInput is a parameter object for creating a meter.
func (UpdateMeterInput) Validate ¶
func (i UpdateMeterInput) Validate(valueProperty *string) error
Validate validates the create meter input.
type WindowSize ¶
type WindowSize string
const ( // WindowSizeSecond is the size of the window in seconds, this is possible to use for streaming queries // but not exposed to the metering API as this seems to be an overkill for most external use-cases. WindowSizeSecond WindowSize = "SECOND" WindowSizeMinute WindowSize = "MINUTE" WindowSizeHour WindowSize = "HOUR" WindowSizeDay WindowSize = "DAY" WindowSizeMonth WindowSize = "MONTH" )
Note: keep values up to date in the meter package
func (WindowSize) Values ¶
func (WindowSize) Values() (kinds []string)
Values provides list valid values for Enum