meter

package
v1.0.0-beta.211 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 21, 2025 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
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

func IsMeterNotFoundError(err error) bool

IsMeterNotFoundError returns true if the error is a MeterNotFoundError.

func NewErrInvalidEvent

func NewErrInvalidEvent(err error) error

func NewErrInvalidMeter

func NewErrInvalidMeter(err error) error

func NewMeterNotFoundError

func NewMeterNotFoundError(meterSlug string) error

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

type DeleteMeterInput struct {
	Namespace string
	IDOrSlug  string
}

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

type GetMeterInput struct {
	Namespace string
	IDOrSlug  string
}

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

	// Deprecated, always set to MINUTE
	WindowSize WindowSize
}

Meter is the meter model

func ListAll

func ListAll(ctx context.Context, service Service, params ListMetersParams) ([]Meter, error)

ListAll returns a list of meters. Helper function for listing all meters. Page param will be ignored.

func ListMetersForAllNamespaces

func ListMetersForAllNamespaces(ctx context.Context, service Service) ([]Meter, error)

ListMetersForAllNamespaces returns a list of meters. Helper function for listing all meters across all namespaces.

func (Meter) Equal

func (m1 Meter) Equal(m2 Meter) error

func (*Meter) SupportsWindowSize

func (m *Meter) SupportsWindowSize(w *WindowSize) error

func (*Meter) Validate

func (m *Meter) Validate() error

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"
)

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"`
	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 OrderBy

type OrderBy string

OrderBy is the order by clause for features

const (
	OrderByKey         OrderBy = "key"
	OrderByName        OrderBy = "name"
	OrderByAggregation OrderBy = "aggregation"
	OrderByCreatedAt   OrderBy = "createdAt"
	OrderByUpdatedAt   OrderBy = "updatedAt"
)

func (OrderBy) Values

func (f OrderBy) Values() []OrderBy

type ParsedEvent

type ParsedEvent struct {
	Value       *float64
	ValueString *string
	GroupBy     map[string]string
}

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 (
	WindowSizeMinute WindowSize = "MINUTE"
	WindowSizeHour   WindowSize = "HOUR"
	WindowSizeDay    WindowSize = "DAY"
)

Note: keep values up to date in the meter package

func WindowSizeFromDuration

func WindowSizeFromDuration(duration time.Duration) (WindowSize, error)

func (WindowSize) AddTo

func (w WindowSize) AddTo(t time.Time) (time.Time, error)

func (WindowSize) Duration

func (w WindowSize) Duration() time.Duration

Duration returns the duration of the window size BEWARE: a day is NOT 24 hours

func (WindowSize) Truncate

func (w WindowSize) Truncate(t time.Time) (time.Time, error)

func (WindowSize) Values

func (WindowSize) Values() (kinds []string)

Values provides list valid values for Enum

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL