logicblock

package
v0.0.7 Latest Latest
Warning

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

Go to latest
Published: Mar 23, 2026 License: MIT Imports: 15 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BlockTypeDropIn                      = config.DropInBlockType
	DropInLogicMetricDropinListUserCount = "dropin_list_user_count"
	DropInCommandReset                   = "reset"
	DropInCommandAdd                     = "add"
	DropInCommandDelete                  = "delete"
	DropinCommandList                    = "list"
)
View Source
const (
	BlockTypeLimiter    = config.LimiterBlockType
	LimiterCommandList  = "list"
	LimiterCommandClear = "clear"
)
View Source
const (
	BlockTypeUserList     = config.UserListBlockType
	UserListCommandList   = "list"
	UserListCommandReload = "reload"
)
View Source
const BlockTypeRegex = config.RegexBlockType
View Source
const BlockTypeRemove = config.RemoveBlockType

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseLogicblock

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

func NewBaseLogicblock

func NewBaseLogicblock(blockType string, cfg types.LogicBlockConfig, logger *slog.Logger) *BaseLogicblock

func (*BaseLogicblock) BlockName

func (l *BaseLogicblock) BlockName() string

func (*BaseLogicblock) BlockType

func (l *BaseLogicblock) BlockType() string

func (*BaseLogicblock) Config

func (*BaseLogicblock) Logger

func (l *BaseLogicblock) Logger() *slog.Logger

func (*BaseLogicblock) Reset

func (l *BaseLogicblock) Reset() error

func (*BaseLogicblock) Shutdown

func (l *BaseLogicblock) Shutdown(ctx context.Context) error

func (*BaseLogicblock) Test

func (l *BaseLogicblock) Test(did string, rkey string, post *apibsky.FeedPost) (result bool)

type CommandProcessor

type CommandProcessor interface {
	ProcessCommand(command string, args map[string]string) (message string, err error)
}

type DropInLogicblock

type DropInLogicblock struct {
	*BaseLogicblock
	// contains filtered or unexported fields
}

func (*DropInLogicblock) GetMetrics

func (d *DropInLogicblock) GetMetrics() []metrics.Metric

func (*DropInLogicblock) HandlePreDelete

func (d *DropInLogicblock) HandlePreDelete(did string, rkey string) error

func (*DropInLogicblock) ProcessCommand

func (d *DropInLogicblock) ProcessCommand(command string, args map[string]string) (message string, err error)

func (*DropInLogicblock) Reset

func (d *DropInLogicblock) Reset() error

func (*DropInLogicblock) Shutdown

func (d *DropInLogicblock) Shutdown(ctx context.Context) error

func (*DropInLogicblock) Test

func (d *DropInLogicblock) Test(did string, rkey string, post *apibsky.FeedPost) bool

type LimiterLogicblock

type LimiterLogicblock struct {
	*BaseLogicblock
	// contains filtered or unexported fields
}

func (*LimiterLogicblock) ProcessCommand

func (l *LimiterLogicblock) ProcessCommand(command string, args map[string]string) (message string, err error)

func (*LimiterLogicblock) Reset

func (l *LimiterLogicblock) Reset() error

func (*LimiterLogicblock) Shutdown

func (l *LimiterLogicblock) Shutdown(ctx context.Context) error

func (*LimiterLogicblock) Test

func (l *LimiterLogicblock) Test(did string, rkey string, post *apibsky.FeedPost) bool

type LogicBlock

type LogicBlock interface {
	// BlockType returns the unique identifier of the logic block
	BlockType() string

	// BlockName returns the name of the logic block
	BlockName() string

	// Config returns the configuration for this logic block
	Config() types.LogicBlockConfig

	// Logger returns the logger instance for this logic block
	Logger() *slog.Logger

	// Test evaluates a post against the logic block's rules
	Test(did string, rkey string, post *apibsky.FeedPost) (result bool)

	// Reset resets any internal state of the logic block
	Reset() error

	// Shutdown performs cleanup when the logic block is being shut down
	Shutdown(ctx context.Context) error
}

LogicBlock represents a unit of logic that can be applied to posts for filtering and processing in the feed generation pipeline.

func NewDropInLogicBlock

func NewDropInLogicBlock(cfg types.LogicBlockConfig, logger *slog.Logger) (LogicBlock, error)

func NewLimiterLogicBlock

func NewLimiterLogicBlock(cfg types.LogicBlockConfig, logger *slog.Logger) (LogicBlock, error)

func NewRegexLogicBlock

func NewRegexLogicBlock(cfg types.LogicBlockConfig, logger *slog.Logger) (LogicBlock, error)

func NewRemoveLogicBlock

func NewRemoveLogicBlock(cfg types.LogicBlockConfig, logger *slog.Logger) (LogicBlock, error)

func NewUserListLogicBlock

func NewUserListLogicBlock(cfg types.LogicBlockConfig, logger *slog.Logger) (LogicBlock, error)

type LogicBlockCreator

type LogicBlockCreator func(types.LogicBlockConfig, *slog.Logger) (LogicBlock, error)

LogicBlockCreator is a function type that creates new logic block instances

type LogicBlockFactory

type LogicBlockFactory struct {
	Creators map[string]LogicBlockCreator
}

func FactoryInstance

func FactoryInstance() *LogicBlockFactory

func (*LogicBlockFactory) Create

func (f *LogicBlockFactory) Create(cfg types.LogicBlockConfig, logger *slog.Logger) (LogicBlock, error)

func (*LogicBlockFactory) RegisterCreator

func (f *LogicBlockFactory) RegisterCreator(name string, creator func(types.LogicBlockConfig, *slog.Logger) (LogicBlock, error))

type MetricProvider

type MetricProvider interface {
	GetMetrics() []metrics.Metric
}

type PreDeleteHandler

type PreDeleteHandler interface {
	HandlePreDelete(did string, rkey string) error
}

PreDeleteHandler is an interface for logic blocks that handle pre-delete events

type RegexLogicblock

type RegexLogicblock struct {
	*BaseLogicblock
	// contains filtered or unexported fields
}

func (*RegexLogicblock) Reset

func (l *RegexLogicblock) Reset() error

func (*RegexLogicblock) Shutdown

func (l *RegexLogicblock) Shutdown(ctx context.Context) error

func (*RegexLogicblock) Test

func (l *RegexLogicblock) Test(did string, rkey string, post *apibsky.FeedPost) (result bool)

type RemoveLogicblock

type RemoveLogicblock struct {
	*BaseLogicblock
	// contains filtered or unexported fields
}

func (*RemoveLogicblock) Reset

func (l *RemoveLogicblock) Reset() error

func (*RemoveLogicblock) Shutdown

func (l *RemoveLogicblock) Shutdown(ctx context.Context) error

func (*RemoveLogicblock) Test

func (l *RemoveLogicblock) Test(did string, rkey string, post *apibsky.FeedPost) (result bool)

Returns true if the post does not match the removal condition

type UserListLogicblock

type UserListLogicblock struct {
	*BaseLogicblock
	// contains filtered or unexported fields
}

func (*UserListLogicblock) ProcessCommand

func (l *UserListLogicblock) ProcessCommand(command string, args map[string]string) (message string, err error)

func (*UserListLogicblock) Reset

func (l *UserListLogicblock) Reset() error

func (*UserListLogicblock) Shutdown

func (l *UserListLogicblock) Shutdown(ctx context.Context) error

func (*UserListLogicblock) Test

func (l *UserListLogicblock) Test(did string, rkey string, post *apibsky.FeedPost) bool

Jump to

Keyboard shortcuts

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