scheduled

package
v0.1442.0 Latest Latest
Warning

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

Go to latest
Published: Sep 24, 2024 License: MIT Imports: 12 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ActionValues = ActionOptions{
	ExpireDonorIdentity: ActionExpireDonorIdentity,
}

Functions

This section is empty.

Types

type Action

type Action uint8
const (
	// ActionExpireDonorIdentity will check that the target donor has not signed
	// their LPA, and if so remove their identity data and notify them of the
	// change.
	ActionExpireDonorIdentity Action = iota + 1
)

func ParseAction

func ParseAction(s string) (Action, error)

func (Action) IsExpireDonorIdentity

func (i Action) IsExpireDonorIdentity() bool

func (Action) MarshalText

func (i Action) MarshalText() ([]byte, error)

func (Action) String

func (i Action) String() string

func (*Action) UnmarshalText

func (i *Action) UnmarshalText(text []byte) error

type ActionFunc

type ActionFunc func(ctx context.Context, row *Event) error

type ActionOptions

type ActionOptions struct {
	ExpireDonorIdentity Action
}

type DonorStore

type DonorStore interface {
	One(ctx context.Context, pk dynamo.LpaKeyType, sk dynamo.SK) (*donordata.Provided, error)
	Put(ctx context.Context, provided *donordata.Provided) error
}

type DynamoClient

type DynamoClient interface {
	Move(ctx context.Context, oldKeys dynamo.Keys, value any) error
	OneByPK(ctx context.Context, pk dynamo.PK, v interface{}) error
	Put(ctx context.Context, v interface{}) error
}

type Event

type Event struct {
	PK dynamo.ScheduledDayKeyType
	SK dynamo.ScheduledKeyType
	// CreatedAt is when the event was created
	CreatedAt time.Time
	// At is when the action should be done
	At time.Time
	// Action is what to do when run
	Action Action
	// TargetLpaKey is used to specify the target of the action
	TargetLpaKey dynamo.LpaKeyType
	// TargetLpaOwnerKey is used to specify the target of the action
	TargetLpaOwnerKey dynamo.LpaOwnerKeyType
}

A Event specifies an action to take in the future.

type Logger

type Logger interface {
	InfoContext(ctx context.Context, msg string, args ...any)
	ErrorContext(ctx context.Context, msg string, args ...any)
}

type NotifyClient

type NotifyClient interface {
	SendActorEmail(ctx context.Context, to, lpaUID string, email notify.Email) error
}

type Runner

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

func NewRunner

func NewRunner(logger Logger, store ScheduledStore, donorStore DonorStore, notifyClient NotifyClient, period time.Duration) *Runner

func (*Runner) Run

func (r *Runner) Run(ctx context.Context) error

Run the Runner, it is expected to be called in a Go routine.

type ScheduledStore

type ScheduledStore interface {
	Pop(ctx context.Context, at time.Time) (*Event, error)
}

type Store

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

func NewStore

func NewStore(dynamoClient DynamoClient) *Store

func (*Store) Pop

func (s *Store) Pop(ctx context.Context, day time.Time) (*Event, error)

func (*Store) Put

func (s *Store) Put(ctx context.Context, row Event) error

type Waiter

type Waiter interface {
	Reset()
	Wait() error
}

Jump to

Keyboard shortcuts

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