Documentation ¶
Index ¶
- type Condition
- type Dimension
- type DimensionKey
- type ItemRow
- type ItemsRequest
- type ItemsRequestFilter
- type ItemsRequestOrder
- type ItemsResponse
- type Metric
- type ReadRepository
- type SQLRepository
- func (r *SQLRepository) AddRows(_ ...*ItemRow) error
- func (r *SQLRepository) Grouped(req *ItemsRequest) ([]*ItemRow, error)
- func (r *SQLRepository) Metrics() ([]*Metric, error)
- func (r *SQLRepository) Ping() error
- func (r *SQLRepository) Total(req *ItemsRequest) (uint64, error)
- func (r *SQLRepository) Values(req *ItemsRequest) ([]*ValueResponse, error)
- type SQLRepositoryOption
- type ValueNumber
- type ValueResponse
- type ValuesResponse
- type WriteRepository
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
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 ¶
ItemsRequestFilter this struct represents request filter.
type ItemsRequestOrder ¶
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 ¶
WriteRepository common write interface.