statistica

package module
v0.2.0-dev Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2024 License: Apache-2.0 Imports: 6 Imported by: 0

README

StatisticA

This package allows you to read statistics from various sources and return standard views.

Examples

  • Example of integration with HTTP server and sqlite link
  • Example of integration with ClickHouse link
  • Example of integration with CSV file link
TODO list
  • base struct
  • store config statistic
  • add examples - HTTP
  • fix integration test
  • operations
  • use generic

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Condition

type Condition string
const (
	CondEq  Condition = "eq"
	CondEq2 Condition = "="

	CondNotEq  Condition = "neq"
	CondNotEq2 Condition = "!="

	CondLike Condition = "like"

	CondGreater     Condition = ">"
	CondGreaterOrEq Condition = ">="
	CondLess        Condition = "<"
	CondLessOrEq    Condition = "<="
)

type Dimension

type Dimension struct {
	// Name contains name for represent column.
	Name DimensionKey

	// Description contains description of column.
	Description string

	// Expression contains sql expression for column.
	Expression string
}

Dimension this struct describe dimensions model.

type DimensionKey

type DimensionKey string

DimensionKey special type for represent dimensions key.

type ItemRow

type ItemRow struct {
	Dimensions map[string]interface{}
	Metrics    map[string]ValueNumber
}

ItemRow this struct represent one row of statistic.

type ItemsRequest

type ItemsRequest struct {
	Limit  int
	Offset int

	SortBy  []*ItemsRequestOrder
	Groups  []string
	Metrics []string
	Filters []*ItemsRequestFilter
}

ItemsRequest this struct represents request query.

type ItemsRequestFilter

type ItemsRequestFilter struct {
	Key       string
	Values    []interface{}
	Condition Condition
}

ItemsRequestFilter this struct represents request filter.

type ItemsRequestOrder

type ItemsRequestOrder struct {
	Key       string
	Direction string
}

ItemsRequestOrder this struct represents request order options.

type ItemsResponse

type ItemsResponse struct {
	Rows  []*ItemRow
	Total ValueNumber
}

ItemsResponse this struct represents group response.

func UnionItemsResponse

func UnionItemsResponse(response ...*ItemsResponse) *ItemsResponse

UnionItemsResponse union data struct ItemsResponse.

type Metric

type Metric struct {
	// Name contains name for represent metric.
	Name string

	// Description contains description of metric.
	Description string

	// Expression contains sql expression for computed statistic metric.
	Expression string
}

Metric this struct describe metrics model.

type ReadRepository

type ReadRepository interface {
	// Total returns total rows by query conditions.
	Total(req *ItemsRequest) (uint64, error)
	// Values returns list of allowed values with size by query conditions.
	Values(req *ItemsRequest) ([]*ValueResponse, error)
	// Grouped returns rows metrics by group filtered by query conditions.
	Grouped(req *ItemsRequest) ([]*ItemRow, error)
	// Metrics returns list of allowed metrics.
	Metrics() ([]*Metric, error)
}

ReadRepository common read interface.

type SQLRepository

type SQLRepository struct {
	// contains filtered or unexported fields
}

SQLRepository sql implementation of ReadRepository.

func NewSQLRepository

func NewSQLRepository(
	connection *sql.DB, table string, dimensions []*Dimension, metrics []*Metric, options ...SQLRepositoryOption,
) *SQLRepository

NewSQLRepository returns new instance of SQLRepository.

func (*SQLRepository) AddRows

func (r *SQLRepository) AddRows(_ ...*ItemRow) error

func (*SQLRepository) Grouped

func (r *SQLRepository) Grouped(req *ItemsRequest) ([]*ItemRow, error)

func (*SQLRepository) Metrics

func (r *SQLRepository) Metrics() ([]*Metric, error)

Metrics returns allowed metrics.

func (*SQLRepository) Ping

func (r *SQLRepository) Ping() error

func (*SQLRepository) Total

func (r *SQLRepository) Total(req *ItemsRequest) (uint64, error)

Total returns total rows by query ItemsRequest.

func (*SQLRepository) Values

func (r *SQLRepository) Values(req *ItemsRequest) ([]*ValueResponse, error)

Values returns values ValueResponse by query ItemsRequest.

type SQLRepositoryOption

type SQLRepositoryOption func(*SQLRepository)

SQLRepositoryOption todo.

func LoggerSQLRepositoryOption

func LoggerSQLRepositoryOption(logger *zap.Logger) SQLRepositoryOption

LoggerSQLRepositoryOption todo.

type ValueNumber

type ValueNumber float64

ValueNumber special type for representation number value.

type ValueResponse

type ValueResponse struct {
	// Name value from query.
	Name []interface{} `json:"name"`

	// Key value from DB.
	Key []interface{} `json:"key"`

	//	Count size by value Key.
	Count ValueNumber `json:"count"`
}

ValueResponse this struct represents value response.

type ValuesResponse

type ValuesResponse struct {
	Values []*ValueResponse `json:"values"`
}

ValuesResponse this struct represents values response.

func UnionValuesResponse

func UnionValuesResponse(response ...*ValuesResponse) *ValuesResponse

UnionValuesResponse union data struct ValuesResponse.

type WriteRepository

type WriteRepository interface {
	// AddRows add rows.
	AddRows(rows ...*ItemRow) error
}

WriteRepository common write interface.

Directories

Path Synopsis
examples
csv

Jump to

Keyboard shortcuts

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