store

package
v2.25.0 Latest Latest
Warning

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

Go to latest
Published: Jul 3, 2025 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNotSupported    = errors.New("not supported")
	ErrNotFound        = errors.New("not found")
	ErrNotModified     = errors.New("not modified")
	ErrInvalidArgument = errors.New("invalid argument")
	ErrPartialDelete   = errors.New("some errors occurred while deleting")
)

Functions

func IsDuplicateKeyError

func IsDuplicateKeyError(err error) bool

func ValidateAndNormalizeCondition

func ValidateAndNormalizeCondition(c *pb.Condition, isUpdate bool) (*pb.Condition, error)

func ValidateAndNormalizeConditionsQuery

func ValidateAndNormalizeConditionsQuery(q *GetLatestConditionsQuery) error

func ValidateAndNormalizeConfiguration

func ValidateAndNormalizeConfiguration(c *pb.Configuration, isUpdate bool) (*pb.Configuration, error)

func ValidateAppliedConfiguration

func ValidateAppliedConfiguration(c *pb.AppliedConfiguration) error

func ValidateInvokeConfigurationRequest

func ValidateInvokeConfigurationRequest(req *InvokeConfigurationRequest) error

Types

type AppliedConfiguration

type AppliedConfiguration struct {
	RecordID string `bson:"_id"`
	pb.AppliedConfiguration
}

func (*AppliedConfiguration) GetAppliedConfiguration

func (c *AppliedConfiguration) GetAppliedConfiguration() *pb.AppliedConfiguration

func (*AppliedConfiguration) UnmarshalBSON

func (c *AppliedConfiguration) UnmarshalBSON(data []byte) error

type Condition

type Condition struct {
	Id              string             `bson:"_id"`
	Owner           string             `bson:"owner"`
	ConfigurationId string             `bson:"configurationId"`
	Latest          *ConditionVersion  `bson:"latest,omitempty"`
	Versions        []ConditionVersion `bson:"versions,omitempty"`
}

func MakeFirstCondition

func MakeFirstCondition(c *pb.Condition) Condition

func (*Condition) Clone

func (c *Condition) Clone() *Condition

func (*Condition) GetLatest

func (c *Condition) GetLatest() (*pb.Condition, error)

func (*Condition) RangeVersions

func (c *Condition) RangeVersions(f func(int, *pb.Condition) bool)

type ConditionVersion

type ConditionVersion struct {
	Name               string   `bson:"name,omitempty"`
	Version            uint64   `bson:"version"`
	Enabled            bool     `bson:"enabled"`
	Timestamp          int64    `bson:"timestamp"`
	DeviceIdFilter     []string `bson:"deviceIdFilter,omitempty"`
	ResourceTypeFilter []string `bson:"resourceTypeFilter,omitempty"`
	ResourceHrefFilter []string `bson:"resourceHrefFilter,omitempty"`
	JqExpressionFilter string   `bson:"jqExpressionFilter,omitempty"`
	ApiAccessToken     string   `bson:"apiAccessToken,omitempty"`
}

func MakeConditionVersion

func MakeConditionVersion(c *pb.Condition) ConditionVersion

func (*ConditionVersion) Copy

type Configuration

type Configuration struct {
	Id       string                 `bson:"_id"`
	Owner    string                 `bson:"owner"`
	Latest   *ConfigurationVersion  `bson:"latest,omitempty"`
	Versions []ConfigurationVersion `bson:"versions,omitempty"`
}

func MakeFirstConfiguration

func MakeFirstConfiguration(c *pb.Configuration) Configuration

func (*Configuration) Clone

func (c *Configuration) Clone() *Configuration

func (*Configuration) GetLatest

func (c *Configuration) GetLatest() (*pb.Configuration, error)

func (*Configuration) RangeVersions

func (c *Configuration) RangeVersions(f func(int, *pb.Configuration) bool)

type ConfigurationVersion

type ConfigurationVersion struct {
	Name      string                       `bson:"name,omitempty"`
	Version   uint64                       `bson:"version"`
	Resources []*pb.Configuration_Resource `bson:"resources"`
	Timestamp int64                        `bson:"timestamp"`
}

func MakeConfigurationVersion

func MakeConfigurationVersion(c *pb.Configuration) ConfigurationVersion

func (*ConfigurationVersion) Copy

type GetLatestConditionsQuery

type GetLatestConditionsQuery struct {
	DeviceID           string
	ResourceHref       string
	ResourceTypeFilter []string
}

type InvokeConfigurationRequest

type InvokeConfigurationRequest = pb.InvokeConfigurationRequest

type Iterator

type Iterator[T any] interface {
	Next(ctx context.Context, v *T) bool
	Err() error
}

type MongoIterator

type MongoIterator[T any] struct {
	Cursor *mongo.Cursor
}

func (*MongoIterator[T]) Err

func (i *MongoIterator[T]) Err() error

func (*MongoIterator[T]) Next

func (i *MongoIterator[T]) Next(ctx context.Context, s *T) bool

type ProccessAppliedConfigurations

type ProccessAppliedConfigurations = Process[AppliedConfiguration]

type Process

type Process[T any] func(v *T) error

type ProcessConditions

type ProcessConditions = Process[Condition]

type ProcessConfigurations

type ProcessConfigurations = Process[Configuration]

type Store

type Store interface {
	// CreateCondition creates a new condition. If the condition already exists, it will throw an error.
	CreateCondition(ctx context.Context, condition *pb.Condition) (*pb.Condition, error)
	// UpdateCondition updates an existing condition.
	UpdateCondition(ctx context.Context, condition *pb.Condition) (*pb.Condition, error)
	// GetConditions loads conditions from the database.
	GetConditions(ctx context.Context, owner string, query *pb.GetConditionsRequest, p ProcessConditions) error
	// DeleteConditions deletes conditions from the database.
	DeleteConditions(ctx context.Context, owner string, query *pb.DeleteConditionsRequest) error
	// InsertConditions inserts conditions into the database.
	InsertConditions(ctx context.Context, conditions ...*Condition) error
	// GetLatestEnabledConditions finds latest conditions that match the query.
	GetLatestEnabledConditions(ctx context.Context, owner string, query *GetLatestConditionsQuery, p ProcessConditions) error

	// CreateConfiguration creates a new configuration in the database.
	CreateConfiguration(ctx context.Context, conf *pb.Configuration) (*pb.Configuration, error)
	// UpdateConfiguration updates an existing configuration in the database.
	UpdateConfiguration(ctx context.Context, conf *pb.Configuration) (*pb.Configuration, error)
	// GetConfigurations loads a configurations from the database.
	GetConfigurations(ctx context.Context, owner string, query *pb.GetConfigurationsRequest, p ProcessConfigurations) error
	// DeleteConfigurations deletes configurations from the database.
	DeleteConfigurations(ctx context.Context, owner string, query *pb.DeleteConfigurationsRequest) error
	// InsertConditions inserts conditions into the database.
	InsertConfigurations(ctx context.Context, configurations ...*Configuration) error
	// GetLatestConfigurationsByID finds latest configurations by their IDs.
	GetLatestConfigurationsByID(ctx context.Context, owner string, ids []string, p ProcessConfigurations) error

	// GetAppliedConfigurations loads applied device configurations from the database.
	GetAppliedConfigurations(ctx context.Context, owner string, query *pb.GetAppliedConfigurationsRequest, p ProccessAppliedConfigurations) error
	// DeleteAppliedConfigurations deletes applied device configurations from the database.
	DeleteAppliedConfigurations(ctx context.Context, owner string, query *pb.DeleteAppliedConfigurationsRequest) error
	// CreateAppliedConfiguration creates a new applied device configuration in the database.
	//
	// If the configuration with given deviceID and configurationID already exists, it will throw an error, unless the force flag is set to true.
	//
	// The first return value is the created applied device configuration. The second return value is the applied device configuration that was replaced if the force flag was set to true.
	CreateAppliedConfiguration(ctx context.Context, conf *pb.AppliedConfiguration, force bool) (*pb.AppliedConfiguration, *pb.AppliedConfiguration, error)
	// InsertAppliedConditions inserts applied configurations into the database.
	InsertAppliedConfigurations(ctx context.Context, configurations ...*AppliedConfiguration) error
	// UpdateAppliedConfigurationResource updates an existing applied device configuration resource in the database.
	UpdateAppliedConfigurationResource(ctx context.Context, owner string, query UpdateAppliedConfigurationResourceRequest) (*pb.AppliedConfiguration, error)
	// GetPendingAppliedConfigurationResourceUpdates loads applied device configuration with expired (validUntil <= now) resource updates from the database.
	GetPendingAppliedConfigurationResourceUpdates(ctx context.Context, expiredOnly bool, p ProccessAppliedConfigurations) (int64, error)

	Close(ctx context.Context) error
}

type UpdateAppliedConfigurationResourceRequest

type UpdateAppliedConfigurationResourceRequest struct {
	AppliedConfigurationID string
	AppliedCondition       *pb.AppliedConfiguration_LinkedTo
	StatusFilter           []pb.AppliedConfiguration_Resource_Status
	Resource               *pb.AppliedConfiguration_Resource
}

func (*UpdateAppliedConfigurationResourceRequest) Validate

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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