operationsbus

package
v0.0.11 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2024 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Unknown     string = "Unknown"
	Pending            = "Pending"
	In_Progress        = "In_Progress"
	Completed          = "Completed"
	Failed             = "Failed"
	Cancelled          = "Cancelled"
)

Variables

This section is empty.

Functions

func CreateProcessor

func CreateProcessor(serviceBusReceiver sb.ServiceBusReceiver, matcher *Matcher, operationController OperationController) (*shuttle.Processor, error)

Types

type APIOperation

type APIOperation interface {
	Run(context.Context) *Result
	Guardconcurrency(context.Context, Entity) (*CategorizedError, error)
	EntityFetcher(context.Context) (Entity, error)
	Init(context.Context, OperationRequest) (APIOperation, error)
	GetName(context.Context) string
	GetOperationRequest(context.Context) *OperationRequest
}

OpInterface is the interface all operations will need to implement.

type CategorizedError

type CategorizedError struct {
	Message      string
	InnerMessage string
	ErrorCode    int
}

func NewCategorizedError

func NewCategorizedError(message string, innerMessage string, errorCode int) *CategorizedError

func (*CategorizedError) Error

func (ce *CategorizedError) Error() string

type Entity

type Entity interface {
	GetLatestOperationID() string
}

type Matcher

type Matcher struct {
	Types map[string]reflect.Type
}

func NewMatcher

func NewMatcher() *Matcher

func (*Matcher) CreateInstance

func (m *Matcher) CreateInstance(key string) (APIOperation, error)

This will create an empty instance of the type, with which you can then call op.Init() and initialize any info you need.

func (*Matcher) Get

func (m *Matcher) Get(key string) (reflect.Type, bool)

TODO(mheberling): do we need to delete this? Get retrieves a value from the map by its key

func (*Matcher) Register

func (m *Matcher) Register(key string, value APIOperation)

Set adds a key-value pair to the map Ex: matcher.Register("LongRunning", &LongRunning{})

type OperationController added in v0.0.8

type OperationController interface {
	OperationCancel(context.Context, string) error
	OperationInProgress(context.Context, string) error
	OperationTimeout(context.Context, string) error
	OperationCompleted(context.Context, string) error
	OperationPending(context.Context, string) error
	OperationUnkown(context.Context, string) error
}

type OperationRequest

type OperationRequest struct {
	OperationName  string
	APIVersion     string
	RetryCount     int
	OperationId    string
	EntityId       string
	EntityType     string
	ExpirationDate *timestamppb.Timestamp

	// Service bus for retry
	ServiceBusConnectionString string
	ServiceBusClientUrl        string
	ServiceBusSenderQueue      string

	// HTTP
	Body       []byte
	HttpMethod string
}

All the fields that the operations might need. This struct will be part of every operation.

func (*OperationRequest) Retry added in v0.0.8

func (opRequest *OperationRequest) Retry(ctx context.Context) error

type Result

type Result struct {
	HTTPCode int
	Message  string
	Error    error
}

This is the return value of the Run method, should we want to add some conditional logic depending on how the operation ended.

func NewResult

func NewResult(httpCode int, message string, err error) *Result

Jump to

Keyboard shortcuts

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