Documentation
¶
Index ¶
- Constants
- Variables
- func GetPatternFieldsHandler(patternFieldGetter patternfields.FieldGetter, ...) func(c *gin.Context)
- func ValidateEditRequest(sl validator.StructLevel)
- type API
- type AggregationResult
- type BulkDeleteRequestItem
- type CountAlarmsResponse
- type CountEntitiesResponse
- type CountRequest
- type CountResponse
- type EditRequest
- type ListRequest
- type LiteralFieldStats
- type OptimizeAcceptRequest
- type OptimizeJob
- type OptimizeRequest
- type OptimizeResult
- type OptimizeWorker
- type OptimizedFieldRegexp
- type Response
- type Store
- type Suggestion
Constants ¶
View Source
const ( OptimizeStatusCreated = iota OptimizeStatusRunning OptimizeStatusSucceeded OptimizeStatusFailed OptimizeStatusAccepted OptimizeStatusRejected )
View Source
const ( EntityFieldComponent = "component" EntityFieldName = "name" EntityInfosPrefix = "infos." )
Variables ¶
View Source
var ErrTooLongGroup = fmt.Errorf("literal group is too long, max length is %d", groupSizeLimit)
Functions ¶
func GetPatternFieldsHandler ¶
func GetPatternFieldsHandler(patternFieldGetter patternfields.FieldGetter, errorResponder httperror.Responder, collection string) func(c *gin.Context)
GetPatternFieldsHandler @Success 200 {array} patternfields.FieldsResponse
func ValidateEditRequest ¶
func ValidateEditRequest(sl validator.StructLevel)
Types ¶
type API ¶
type AggregationResult ¶
type AggregationResult struct {
Data []Response `bson:"data" json:"data"`
TotalCount int64 `bson:"total_count" json:"total_count"`
}
func (*AggregationResult) GetData ¶
func (r *AggregationResult) GetData() any
func (*AggregationResult) GetTotal ¶
func (r *AggregationResult) GetTotal() int64
type BulkDeleteRequestItem ¶
type BulkDeleteRequestItem struct {
ID string `json:"_id" binding:"required"`
}
type CountAlarmsResponse ¶
type CountAlarmsResponse struct {
AlarmPattern CountResponse `json:"alarm_pattern"`
EntityPattern CountResponse `json:"entity_pattern"`
PbehaviorPattern CountResponse `json:"pbehavior_pattern"`
All CountResponse `json:"all"`
Entities CountResponse `json:"entities"`
}
type CountEntitiesResponse ¶
type CountEntitiesResponse struct {
AlarmPattern CountResponse `json:"alarm_pattern"`
EntityPattern CountResponse `json:"entity_pattern"`
PbehaviorPattern CountResponse `json:"pbehavior_pattern"`
All CountResponse `json:"all"`
}
type CountRequest ¶
type CountResponse ¶
type EditRequest ¶
type EditRequest struct {
ID string `json:"-"`
Title string `json:"title" binding:"required,max=255"`
Type string `json:"type" binding:"required,oneof=alarm entity pbehavior weather_service"`
IsCorporate *bool `json:"is_corporate" binding:"required"`
AlarmPattern pattern.Alarm `json:"alarm_pattern" binding:"alarm_pattern"`
EntityPattern pattern.Entity `json:"entity_pattern" binding:"entity_pattern"`
PbehaviorPattern pattern.PbehaviorInfo `json:"pbehavior_pattern" binding:"pbehavior_pattern"`
WeatherServicePattern pattern.WeatherServicePattern `json:"weather_service_pattern" binding:"weather_service_pattern"`
Author string `json:"author" swaggerignore:"true"`
}
type ListRequest ¶
type ListRequest struct {
pagination.FilteredQuery
SortBy string `json:"sort_by" form:"sort_by" binding:"oneoforempty=_id title author.name author.display_name created updated"`
Corporate *bool `json:"corporate" form:"corporate"`
Type string `json:"type" form:"type"`
}
type LiteralFieldStats ¶
type OptimizeAcceptRequest ¶
type OptimizeJob ¶
type OptimizeJob struct {
ID string `bson:"_id" json:"_id"`
// Possible status values.
// * `0` - Created
// * `1` - Running
// * `2` - Succeeded
// * `3` - Failed
// * `4` - Accepted
// * `5` - Rejected
Status int `bson:"status" json:"status"`
EntityPattern pattern.Entity `bson:"entity_pattern" json:"-"`
Created datetime.CpsTime `bson:"created" json:"-"`
LastPing *datetime.CpsTime `bson:"last_ping" json:"-"`
Retries int64 `bson:"retries" json:"-"`
Suggestions []Suggestion `bson:"suggestions" json:"suggestions"`
OptimizedFieldRegexps []OptimizedFieldRegexp `bson:"optimized_field_regexps" json:"optimized_field_regexps"`
OriginalPatternMS int64 `bson:"original_pattern_ms" json:"original_pattern_ms"`
OriginalPatternCount int `bson:"original_pattern_count" json:"original_pattern_count"`
FailReason string `bson:"fail_reason,omitempty" json:"fail_reason,omitempty"`
AcceptedSuggestion *int `bson:"accepted_suggestion,omitempty" json:"accepted_suggestion,omitempty"`
}
type OptimizeRequest ¶
type OptimizeResult ¶
type OptimizeResult struct {
Suggestions []Suggestion
OptimizedFieldRegexps []OptimizedFieldRegexp
OriginalPatternMS int64
OriginalPatternCount int
}
type OptimizeWorker ¶
type OptimizeWorker interface {
CreateJob(ctx context.Context, r OptimizeRequest) (OptimizeJob, error)
GetJob(ctx context.Context, id string) (OptimizeJob, error)
UpdateJob(ctx context.Context, r OptimizeAcceptRequest) (OptimizeJob, error)
DeleteJob(ctx context.Context, id string) (bool, error)
ProcessJob(ctx context.Context, id string) error
ProcessAbandonedJobs(ctx context.Context)
}
func NewOptimizeWorker ¶
func NewOptimizeWorker( store Store, dbClient mongo.DbClient, jobPublisher workers.JobPublisher, transformer patternfields.Transformer, logger zerolog.Logger, ) OptimizeWorker
type OptimizedFieldRegexp ¶
type Response ¶
type Response struct {
ID string `bson:"_id" json:"_id"`
Title string `bson:"title" json:"title"`
Type string `bson:"type" json:"type"`
IsCorporate bool `bson:"is_corporate" json:"is_corporate"`
AlarmPattern pattern.Alarm `bson:"alarm_pattern" json:"alarm_pattern,omitempty"`
EntityPattern pattern.Entity `bson:"entity_pattern" json:"entity_pattern,omitempty"`
PbehaviorPattern pattern.PbehaviorInfo `bson:"pbehavior_pattern" json:"pbehavior_pattern,omitempty"`
WeatherServicePattern pattern.WeatherServicePattern `bson:"weather_service_pattern" json:"weather_service_pattern,omitempty"`
Author *author.Author `bson:"author" json:"author"`
Created datetime.CpsTime `bson:"created,omitempty" json:"created,omitzero" swaggertype:"integer"`
Updated datetime.CpsTime `bson:"updated,omitempty" json:"updated,omitzero" swaggertype:"integer"`
}
type Store ¶
type Store interface {
Insert(ctx context.Context, r EditRequest) (*Response, error)
GetByID(ctx context.Context, id, userID string) (*Response, error)
Find(ctx context.Context, r ListRequest, userID string) (*AggregationResult, error)
Update(ctx context.Context, r EditRequest) (*Response, error)
Delete(ctx context.Context, pattern Response, userID string) (bool, error)
CountAlarms(ctx context.Context, r CountRequest, maxCount int64) (CountAlarmsResponse, error)
CountEntities(ctx context.Context, r CountRequest, maxCount int64) (CountEntitiesResponse, error)
GetLiteralsFieldStats(ctx context.Context, allLiterals []string) (map[string][]LiteralFieldStats, error)
GetEntityIDs(ctx context.Context, entityPattern pattern.Entity) ([]string, int64, error)
}
func NewStore ¶
func NewStore( dbClient mongo.DbClient, readDbClient mongo.DbClient, pbhComputeChan chan<- rpc.PbehaviorRecomputeEvent, serviceChangeChan chan<- entityservice.ChangeEntityMessage, stateSettingsUpdatesChan chan statesetting.RuleUpdatedMessage, authorProvider author.Provider, transformer patternfields.Transformer, logger zerolog.Logger, ) Store
Source Files
¶
- api.go
- combinations.go
- models.go
- optimize_worker.go
- parser.go
- store.go
- validator.go
Click to show internal directories.
Click to hide internal directories.