Documentation
¶
Index ¶
Constants ¶
View Source
const ( ActionTypeSMTP = "smtp" ActionTypeSMPP = "smpp" ActionTypeAlarm = "alarm" OperatorAND = "AND" OperatorOR = "OR" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type RuleRepository ¶
type RuleRepository interface {
// Save persists multiple rules. Rules are saved using a transaction.
// If one rule fails then none will be saved.
// Successful operation is indicated by a non-nil error response.
Save(ctx context.Context, rules ...Rule) ([]Rule, error)
// RetrieveByID retrieves a rule having the provided ID.
RetrieveByID(ctx context.Context, id string) (Rule, error)
// RetrieveByThing retrieves rules assigned to a certain thing,
// identified by a given thing ID.
RetrieveByThing(ctx context.Context, thingID string, pm apiutil.PageMetadata) (RulesPage, error)
// RetrieveByGroup retrieves rules related to a certain group,
// identified by a given group ID.
RetrieveByGroup(ctx context.Context, groupID string, pm apiutil.PageMetadata) (RulesPage, error)
// RetrieveThingIDsByRule retrieves all thing IDs that have the given rule assigned.
RetrieveThingIDsByRule(ctx context.Context, ruleID string) ([]string, error)
// Update performs an update to the existing rule.
// A non-nil error is returned to indicate operation failure.
Update(ctx context.Context, r Rule) error
// Remove removes rules having the provided IDs.
Remove(ctx context.Context, ids ...string) error
// RemoveByGroup removes rules related to a certain group,
// identified by a given group ID.
RemoveByGroup(ctx context.Context, groupID string) error
// Assign assigns rules to the specified thing.
Assign(ctx context.Context, thingID string, ruleIDs ...string) error
// Unassign removes specific rule assignments from a given thing.
Unassign(ctx context.Context, thingID string, ruleIDs ...string) error
// UnassignByThing removes all rule assignments for a certain thing,
// identified by a given thing ID.
UnassignByThing(ctx context.Context, thingID string) error
}
type Service ¶
type Service interface {
// CreateRules creates rules.
CreateRules(ctx context.Context, token, groupID string, rules ...Rule) ([]Rule, error)
// ListRulesByThing retrieves a paginated list of rules by thing.
ListRulesByThing(ctx context.Context, token, thingID string, pm apiutil.PageMetadata) (RulesPage, error)
// ListRulesByGroup retrieves a paginated list of rules by group.
ListRulesByGroup(ctx context.Context, token, groupID string, pm apiutil.PageMetadata) (RulesPage, error)
// ListThingIDsByRule retrieves a list of thing IDs attached to the given rule ID.
ListThingIDsByRule(ctx context.Context, token, ruleID string) ([]string, error)
// ViewRule retrieves a specific rule by its ID.
ViewRule(ctx context.Context, token, id string) (Rule, error)
// UpdateRule updates the rule identified by the provided ID.
UpdateRule(ctx context.Context, token string, rule Rule) error
// RemoveRules removes the rules identified with the provided IDs.
RemoveRules(ctx context.Context, token string, ids ...string) error
// RemoveRulesByGroup removes the rules identified with the provided IDs.
RemoveRulesByGroup(ctx context.Context, groupID string) error
// AssignRules assigns rules to a specific thing.
AssignRules(ctx context.Context, token, thingID string, ruleIDs ...string) error
// UnassignRules removes rule assignments from a specific thing.
UnassignRules(ctx context.Context, token, thingID string, ruleIDs ...string) error
// UnassignRulesByThing removes all rule assignments from a specific thing.
UnassignRulesByThing(ctx context.Context, thingID string) error
consumers.Consumer
}
Service specifies an API that must be fullfiled by the domain service implementation, and all of its decorators (e.g. logging & metrics). All methods that accept a token parameter use it to identify and authorize the user performing the operation.
func New ¶
func New(rules RuleRepository, things protomfx.ThingsServiceClient, pubsub messaging.PubSub, idp uuid.IDProvider, logger logger.Logger) Service
New instantiates the rules service implementation.
Click to show internal directories.
Click to hide internal directories.