mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-17 15:36:48 +00:00
36 lines
1.1 KiB
Go
36 lines
1.1 KiB
Go
package signozruler
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/SigNoz/signoz/pkg/factory"
|
|
"github.com/SigNoz/signoz/pkg/ruler"
|
|
"github.com/SigNoz/signoz/pkg/ruler/rulestore/sqlrulestore"
|
|
"github.com/SigNoz/signoz/pkg/sqlstore"
|
|
"github.com/SigNoz/signoz/pkg/types/ruletypes"
|
|
"github.com/SigNoz/signoz/pkg/valuer"
|
|
)
|
|
|
|
type provider struct {
|
|
ruleStore ruletypes.RuleStore
|
|
}
|
|
|
|
func NewFactory(sqlstore sqlstore.SQLStore) factory.ProviderFactory[ruler.Ruler, ruler.Config] {
|
|
return factory.NewProviderFactory(factory.MustNewName("signoz"), func(ctx context.Context, settings factory.ProviderSettings, config ruler.Config) (ruler.Ruler, error) {
|
|
return New(ctx, settings, config, sqlstore)
|
|
})
|
|
}
|
|
|
|
func New(ctx context.Context, settings factory.ProviderSettings, config ruler.Config, sqlstore sqlstore.SQLStore) (ruler.Ruler, error) {
|
|
return &provider{ruleStore: sqlrulestore.NewRuleStore(sqlstore)}, nil
|
|
}
|
|
|
|
func (provider *provider) Collect(ctx context.Context, orgID valuer.UUID) (map[string]any, error) {
|
|
rules, err := provider.ruleStore.GetStoredRules(ctx, orgID.String())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return ruletypes.NewStatsFromRules(rules), nil
|
|
}
|