pattern

package
v0.0.0-...-16cf5c7 Latest Latest
Warning

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

Go to latest
Published: Jul 24, 2026 License: AGPL-3.0 Imports: 43 Imported by: 0

Documentation

Index

Constants

View Source
const (
	OptimizeStatusCreated = iota
	OptimizeStatusRunning
	OptimizeStatusSucceeded
	OptimizeStatusFailed
	OptimizeStatusAccepted
	OptimizeStatusRejected
)
View Source
const (
	EntityFieldComponent = "component"
	EntityFieldName      = "name"
	EntityInfosPrefix    = "infos."
)

Variables

View Source
var ErrRegexpNotSupported = errors.New("regexp is not supported")
View Source
var ErrTooLongGroup = fmt.Errorf("literal group is too long, max length is %d", groupSizeLimit)
View Source
var ErrTooLongLiteral = fmt.Errorf("literal is too long, max length is %d", literalLenLimit)
View Source
var ErrTooManyGroups = fmt.Errorf("too many literal groups, max number is %d", groupNumberLimit)

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 API interface {
	crud.API
	BulkDelete(c *gin.Context)
	CountAlarms(c *gin.Context)
	CountEntities(c *gin.Context)
	Optimize(c *gin.Context)
	OptimizeStatus(c *gin.Context)
	OptimizeAccept(c *gin.Context)
	OptimizeCancel(c *gin.Context)
}

func NewAPI

func NewAPI(
	store Store,
	configProvider config.UserInterfaceConfigProvider,
	enforcer security.Enforcer,
	optimizeWorker OptimizeWorker,
	errorResponder httperror.Responder,
	logger zerolog.Logger,
) 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 CountRequest struct {
	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"`
}

type CountResponse

type CountResponse struct {
	Count     int64 `bson:"count" json:"count"`
	OverLimit bool  `bson:"-" json:"over_limit"`
	Millisecs int64 `json:"ms"`
}

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 LiteralFieldStats struct {
	FieldName         string `bson:"k"`
	LiteralFoundTimes int    `bson:"v"`
}

type OptimizeAcceptRequest

type OptimizeAcceptRequest struct {
	ID     string `json:"-"`
	Index  *int   `json:"index" binding:"required_if=Accept true"`
	Accept *bool  `json:"accept" binding:"required"`
}

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 OptimizeRequest struct {
	EntityPattern pattern.Entity `json:"entity_pattern" binding:"entity_pattern"`
}

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 OptimizedFieldRegexp struct {
	Field  string `bson:"field" json:"field"`
	Regexp string `bson:"regexp" json:"regexp"`
}

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

type Suggestion

type Suggestion struct {
	EntityPattern pattern.Entity `json:"entity_pattern"`
	FoundEntities int            `json:"found_entities"`
	Difference    int            `json:"difference"`
}

Source Files

  • api.go
  • combinations.go
  • models.go
  • optimize_worker.go
  • parser.go
  • store.go
  • validator.go

Jump to

Keyboard shortcuts

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