models

package
v1.0.0-beta.19 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2023 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const ProblemContentType = "application/problem+json"

ProblemContentType is the default content type for a Problem response

View Source
const (
	// ProblemTypeDefault is the default problem type.
	ProblemTypeDefault = ProblemType("about:blank")
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Meter

type Meter struct {
	// We don't accept namespace via config, it's set by the `namespace.default`.`
	Namespace     string            `json:"-" yaml:"-"`
	ID            string            `json:"id,omitempty" yaml:"id,omitempty"`
	Slug          string            `json:"slug" yaml:"slug"`
	Description   string            `json:"description,omitempty" yaml:"description,omitempty"`
	Aggregation   MeterAggregation  `json:"aggregation" yaml:"aggregation"`
	EventType     string            `json:"eventType" yaml:"eventType"`
	ValueProperty string            `json:"valueProperty,omitempty" yaml:"valueProperty,omitempty"`
	GroupBy       map[string]string `json:"groupBy,omitempty" yaml:"groupBy,omitempty"`
	WindowSize    WindowSize        `json:"windowSize,omitempty" yaml:"windowSize,omitempty"`
}

func NewMeter

func NewMeter(
	slug string,
	aggregatation MeterAggregation,
	eventType string,
	valueProperty string,
	options *MeterOptions,
) (*Meter, error)

func (*Meter) Render

func (m *Meter) Render(w http.ResponseWriter, r *http.Request) 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"
)

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 MeterFilter

type MeterFilter struct {
	Property string              `json:"property" yaml:"property"`
	Operator MeterFilterOperator `json:"operator" yaml:"operator"`
	Value    string              `json:"value" yaml:"value"`
}

type MeterFilterOperator

type MeterFilterOperator string
const (
	// MeterFilterOperatorIn        MeterFilterOperator = "IN"
	// MeterFilterOperatorNotIn     MeterFilterOperator = "NOT IN"
	MeterFilterOperatorEquals    MeterFilterOperator = "EQ"
	MeterFilterOperatorNot       MeterFilterOperator = "NEQ"
	MeterFilterLowerThan         MeterFilterOperator = "LT"
	MeterFilterLowerThanOrEq     MeterFilterOperator = "LTE"
	MeterFilterGreaterThan       MeterFilterOperator = "GT"
	MeterFilterGreaterThanOrEq   MeterFilterOperator = "GTE"
	MeterFilterOperatorIsNull    MeterFilterOperator = "IS NULL"
	MeterFilterOperatorIsNotNull MeterFilterOperator = "IS NOT NULL"
)

func (MeterFilterOperator) Values

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

Values provides list valid values for Enum

type MeterNotFoundError

type MeterNotFoundError struct {
	MeterSlug string
}

func (*MeterNotFoundError) Error

func (e *MeterNotFoundError) Error() string

type MeterOptions

type MeterOptions struct {
	ID          string
	Description string
	GroupBy     map[string]string
	WindowSize  *WindowSize
}

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,omitempty"`
}

MeterQueryRow returns a single row from the meter dataset.

func (*MeterQueryRow) Render

Render implements the chi renderer interface.

type MeterValue

type MeterValue struct {
	Subject     string            `json:"subject"`
	WindowStart time.Time         `json:"windowStart"`
	WindowEnd   time.Time         `json:"windowEnd"`
	Value       float64           `json:"value"`
	GroupBy     map[string]string `json:"groupBy,omitempty"`
}

TODO: replace this model with something else in the clickhouse connector

type NamespaceNotFoundError

type NamespaceNotFoundError struct {
	Namespace string
}

func (*NamespaceNotFoundError) Error

func (e *NamespaceNotFoundError) Error() string

type Problem

type Problem interface {
	Respond(w http.ResponseWriter, r *http.Request)
	Error() string
	ProblemType() ProblemType
	ProblemTitle() string
}

Problem is the RFC 7807 response body.

func NewStatusProblem

func NewStatusProblem(ctx context.Context, err error, status int) Problem

NewStatusProblem will generate a problem for the provided HTTP status code. The Problem's Status field will be set to match the status argument, and the Title will be set to the default Go status text for that code.

type ProblemType

type ProblemType string

ProblemType contains a URI that identifies the problem type. This URI will, ideally, contain human-readable documentation for the problem when de-referenced.

type StatusProblem

type StatusProblem struct {
	Err error `json:"-"` // low-level runtime error

	// Type is a URI reference that identifies the problem type.
	Type ProblemType `json:"type"`
	// Title is a short, human-readable summary of the problem type.
	Title string `json:"title"`
	// Status is the HTTP status code generated by the origin server for this occurrence of the problem.
	Status int `json:"status"`
	// Detail is a human-readable explanation specific to this occurrence of the problem.
	Detail string `json:"detail,omitempty"`
	// Instance is a URI reference that identifies the specific occurrence of the problem.
	Instance string `json:"instance,omitempty"`
}

StatusProblem is the RFC 7807 response body without additional fields.

func (*StatusProblem) Error

func (p *StatusProblem) Error() string

func (*StatusProblem) ProblemTitle

func (p *StatusProblem) ProblemTitle() string

func (*StatusProblem) ProblemType

func (p *StatusProblem) ProblemType() ProblemType

func (*StatusProblem) Respond

func (p *StatusProblem) Respond(w http.ResponseWriter, r *http.Request)

Respond will render the problem as JSON to the provided ResponseWriter.

type WindowSize

type WindowSize string
const (
	WindowSizeMinute WindowSize = "MINUTE"
	WindowSizeHour   WindowSize = "HOUR"
	WindowSizeDay    WindowSize = "DAY"
)

func WindowSizeFromDuration

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

func (WindowSize) Duration

func (w WindowSize) Duration() time.Duration

Duration returns the duration of the window size

func (WindowSize) Values

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

Values provides list valid values for Enum

Jump to

Keyboard shortcuts

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