action

package
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: Mar 7, 2022 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalidResourceID defines an error caused by an invalid resource id in the provided path.
	ErrInvalidResourceID = errors.New("invalid resource id")

	// ErrInvalidResourceIDOrCode defines an error caused by a value that is supposed to uniquely
	// match a given resource, but which does not match either an ID, nor a code field.
	ErrInvalidResourceIDOrCode = errors.New("invalid resource id or code")
)

Functions

This section is empty.

Types

type DeliveryAction

type DeliveryAction struct {
	// contains filtered or unexported fields
}

func NewDeliveryAction

func NewDeliveryAction(db database.ReadWriter, mq msgqueue.Publisher, clk clock.Clocker) *DeliveryAction

NewDeliveryAction creates a new delivery action.

func (*DeliveryAction) Create

func (a *DeliveryAction) Create(delivery *resource.Delivery) (*resource.Delivery, error)

func (*DeliveryAction) QueueRequest

func (a *DeliveryAction) QueueRequest(deliveryID uuid.UUID) error

func (*DeliveryAction) RetrieveByID

func (a *DeliveryAction) RetrieveByID(id uuid.UUID) (*resource.Delivery, error)

func (*DeliveryAction) RetrieveByMessageID

func (a *DeliveryAction) RetrieveByMessageID(messageID uuid.UUID) ([]*resource.Delivery, error)

func (*DeliveryAction) RetrieveMany

func (a *DeliveryAction) RetrieveMany(q *query.Query) ([]*resource.Delivery, error)

func (*DeliveryAction) Update

func (a *DeliveryAction) Update(id uuid.UUID, delivery *resource.Delivery) (*resource.Delivery, error)

type DeliveryActioner

type DeliveryActioner interface {
	RetrieveMany(*query.Query) ([]*resource.Delivery, error)
	RetrieveByID(uuid.UUID) (*resource.Delivery, error)
	RetrieveByMessageID(uuid.UUID) ([]*resource.Delivery, error)
	Create(*resource.Delivery) (*resource.Delivery, error)
	Update(uuid.UUID, *resource.Delivery) (*resource.Delivery, error)
	QueueRequest(uuid.UUID) error
}

type DeliveryKindAction

type DeliveryKindAction struct {
	// contains filtered or unexported fields
}

func NewDeliveryKindAction

func NewDeliveryKindAction(db database.ReadWriter, clk clock.Clocker) *DeliveryKindAction

NewDeliveryKindAction creates a new delivery kind action.

func (*DeliveryKindAction) Create

func (a *DeliveryKindAction) Create(deliveryKind *resource.DeliveryKind) (*resource.DeliveryKind, error)

func (*DeliveryKindAction) Delete

func (a *DeliveryKindAction) Delete(id uuid.UUID) error

func (*DeliveryKindAction) RetrieveByID

func (a *DeliveryKindAction) RetrieveByID(id uuid.UUID) (*resource.DeliveryKind, error)

func (*DeliveryKindAction) RetrieveByIDOrCode

func (a *DeliveryKindAction) RetrieveByIDOrCode(idOrCode string) (*resource.DeliveryKind, error)

func (*DeliveryKindAction) RetrieveMany

func (a *DeliveryKindAction) RetrieveMany(q *query.Query) ([]*resource.DeliveryKind, error)

func (*DeliveryKindAction) Update

func (a *DeliveryKindAction) Update(id uuid.UUID, deliveryKind *resource.DeliveryKind) (*resource.DeliveryKind, error)

type DeliveryKindActioner

type DeliveryKindActioner interface {
	RetrieveMany(*query.Query) ([]*resource.DeliveryKind, error)
	RetrieveByID(uuid.UUID) (*resource.DeliveryKind, error)
	RetrieveByIDOrCode(string) (*resource.DeliveryKind, error)
	Create(*resource.DeliveryKind) (*resource.DeliveryKind, error)
	Update(uuid.UUID, *resource.DeliveryKind) (*resource.DeliveryKind, error)
	Delete(uuid.UUID) error
}

type MessageAction

type MessageAction struct {
	// contains filtered or unexported fields
}

func NewMessageAction

func NewMessageAction(db database.ReadWriter, clk clock.Clocker) *MessageAction

NewMessageAciton creates a new message action.

func (*MessageAction) Create

func (a *MessageAction) Create(message *resource.Message) (*resource.Message, error)

func (*MessageAction) RetrieveByID

func (a *MessageAction) RetrieveByID(id uuid.UUID) (*resource.Message, error)

func (*MessageAction) RetrieveMany

func (a *MessageAction) RetrieveMany(q *query.Query) ([]*resource.Message, error)

func (*MessageAction) RetrievePotentiallyFailed

func (a *MessageAction) RetrievePotentiallyFailed(since time.Duration) ([]*resource.Message, error)

Failed messages are retried on an exponential backoff schedule, waiting 4^i seconds with each retry. Messages that have been tried six times will be considered as permanently failed.

The following table lists the wait time of each retry:

 deliveries |    wait time    | cumul. wait time
-------------------------------------------------
          0 |    1s,       1s |               1s
          1 |    4s,       4s |               5s
          2 |   16s,      16s |              21s
          3 |   64s,    1m04s |             1m25
          4 |  256s,    4m16s |             5m41
          5 | 1024s,   17m04s |            22m45
          6 | 4096s, 1h08m16s |          1h31m01

Notes:

  • It should not happen for a failed message to have no deliveries. In this case, the message will still be added to the list of messages to deliver.
  • The cumulative wait time column is an approximation. The Scheduler service is run periodically, and the exact wait time cannot be calculated beforehand.

func (*MessageAction) Update

func (a *MessageAction) Update(id uuid.UUID, message *resource.Message) (*resource.Message, error)

type MessageActioner

type MessageActioner interface {
	RetrieveMany(*query.Query) ([]*resource.Message, error)
	RetrieveByID(uuid.UUID) (*resource.Message, error)
	RetrievePotentiallyFailed(time.Duration) ([]*resource.Message, error)
	Create(*resource.Message) (*resource.Message, error)
	Update(uuid.UUID, *resource.Message) (*resource.Message, error)
}

type MessageKindAction

type MessageKindAction struct {
	// contains filtered or unexported fields
}

func NewMessageKindAction

func NewMessageKindAction(db database.ReadWriter, clk clock.Clocker) *MessageKindAction

NewMessageKindAction creates a new message kind action.

func (*MessageKindAction) Create

func (a *MessageKindAction) Create(messageKind *resource.MessageKind) (*resource.MessageKind, error)

func (*MessageKindAction) Delete

func (a *MessageKindAction) Delete(id uuid.UUID) error

func (*MessageKindAction) RetrieveByID

func (a *MessageKindAction) RetrieveByID(id uuid.UUID) (*resource.MessageKind, error)

func (*MessageKindAction) RetrieveByIDOrCode

func (a *MessageKindAction) RetrieveByIDOrCode(idOrCode string) (*resource.MessageKind, error)

func (*MessageKindAction) RetrieveMany

func (a *MessageKindAction) RetrieveMany(q *query.Query) ([]*resource.MessageKind, error)

func (*MessageKindAction) Update

func (a *MessageKindAction) Update(id uuid.UUID, messageKind *resource.MessageKind) (*resource.MessageKind, error)

type MessageKindActioner

type MessageKindActioner interface {
	RetrieveMany(*query.Query) ([]*resource.MessageKind, error)
	RetrieveByID(uuid.UUID) (*resource.MessageKind, error)
	RetrieveByIDOrCode(string) (*resource.MessageKind, error)
	Create(*resource.MessageKind) (*resource.MessageKind, error)
	Update(uuid.UUID, *resource.MessageKind) (*resource.MessageKind, error)
	Delete(uuid.UUID) error
}

type NamespaceAction

type NamespaceAction struct {
	// contains filtered or unexported fields
}

func NewNamespaceAction

func NewNamespaceAction(db database.ReadWriter, clk clock.Clocker) *NamespaceAction

NewNamespaceAction creates a new message action.

func (*NamespaceAction) Create

func (a *NamespaceAction) Create(namespace *resource.Namespace) (*resource.Namespace, error)

func (*NamespaceAction) Delete

func (a *NamespaceAction) Delete(id uuid.UUID) error

func (*NamespaceAction) RetrieveByID

func (a *NamespaceAction) RetrieveByID(id uuid.UUID) (*resource.Namespace, error)

func (*NamespaceAction) RetrieveByIDOrCode

func (a *NamespaceAction) RetrieveByIDOrCode(idOrCode string) (*resource.Namespace, error)

func (*NamespaceAction) RetrieveChildrenIDs

func (a *NamespaceAction) RetrieveChildrenIDs(namespaceIDs ...uuid.UUID) ([]uuid.UUID, error)

TODO: better if it only takes one namespace id? The only current usecase is to retrieve all children of all permitted namespaces, so maybe it's better with an input array?

func (*NamespaceAction) RetrieveMany

func (a *NamespaceAction) RetrieveMany(q *query.Query) ([]*resource.Namespace, error)

func (*NamespaceAction) RetrieveParentIDs

func (a *NamespaceAction) RetrieveParentIDs(namespaceID uuid.UUID) ([]uuid.UUID, error)

func (*NamespaceAction) Update

func (a *NamespaceAction) Update(id uuid.UUID, namespace *resource.Namespace) (*resource.Namespace, error)

type NamespaceActioner

type NamespaceActioner interface {
	RetrieveMany(*query.Query) ([]*resource.Namespace, error)
	RetrieveByID(uuid.UUID) (*resource.Namespace, error)
	RetrieveByIDOrCode(string) (*resource.Namespace, error)
	RetrieveParentIDs(uuid.UUID) ([]uuid.UUID, error)
	RetrieveChildrenIDs(...uuid.UUID) ([]uuid.UUID, error)
	Create(*resource.Namespace) (*resource.Namespace, error)
	Update(uuid.UUID, *resource.Namespace) (*resource.Namespace, error)
	Delete(uuid.UUID) error
}

type TemplateAction

type TemplateAction struct {
	// contains filtered or unexported fields
}

func NewTemplateAction

func NewTemplateAction(db database.ReadWriter, clk clock.Clocker) *TemplateAction

NewTemplateAction creates a new template action.

func (*TemplateAction) Create

func (a *TemplateAction) Create(template *resource.Template) (*resource.Template, error)

func (*TemplateAction) Delete

func (a *TemplateAction) Delete(id uuid.UUID) error

func (*TemplateAction) RetrieveByID

func (a *TemplateAction) RetrieveByID(id uuid.UUID) (*resource.Template, error)

func (*TemplateAction) RetrieveMany

func (a *TemplateAction) RetrieveMany(q *query.Query) ([]*resource.Template, error)

func (*TemplateAction) Update

func (a *TemplateAction) Update(id uuid.UUID, template *resource.Template) (*resource.Template, error)

type TemplateActioner

type TemplateActioner interface {
	RetrieveMany(*query.Query) ([]*resource.Template, error)
	RetrieveByID(uuid.UUID) (*resource.Template, error)
	Create(*resource.Template) (*resource.Template, error)
	Update(uuid.UUID, *resource.Template) (*resource.Template, error)
	Delete(uuid.UUID) error
}

type TemplateKindAction

type TemplateKindAction struct {
	// contains filtered or unexported fields
}

func NewTemplateKindAction

func NewTemplateKindAction(db database.ReadWriter, clk clock.Clocker) *TemplateKindAction

NewTemplateKindAction creates a new template kind action.

func (*TemplateKindAction) Create

func (a *TemplateKindAction) Create(templateKind *resource.TemplateKind) (*resource.TemplateKind, error)

func (*TemplateKindAction) Delete

func (a *TemplateKindAction) Delete(id uuid.UUID) error

func (*TemplateKindAction) RetrieveByID

func (a *TemplateKindAction) RetrieveByID(id uuid.UUID) (*resource.TemplateKind, error)

func (*TemplateKindAction) RetrieveMany

func (a *TemplateKindAction) RetrieveMany(q *query.Query) ([]*resource.TemplateKind, error)

func (*TemplateKindAction) Update

func (a *TemplateKindAction) Update(id uuid.UUID, templateKind *resource.TemplateKind) (*resource.TemplateKind, error)

type TemplateKindActioner

type TemplateKindActioner interface {
	RetrieveMany(*query.Query) ([]*resource.TemplateKind, error)
	RetrieveByID(uuid.UUID) (*resource.TemplateKind, error)
	Create(*resource.TemplateKind) (*resource.TemplateKind, error)
	Update(uuid.UUID, *resource.TemplateKind) (*resource.TemplateKind, error)
	Delete(uuid.UUID) error
}

Jump to

Keyboard shortcuts

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