state

package
v0.0.0-...-2bd5d0f Latest Latest
Warning

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

Go to latest
Published: Aug 4, 2026 License: AGPL-3.0 Imports: 7 Imported by: 0

Documentation

Overview

Package state provides processed-message deduplication for Expensor readers.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateKey

func GenerateKey(source, messageID, date string) string

GenerateKey creates a unique key for a message using SHA256 hash.

Types

type Manager

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

Manager tracks processed messages to avoid reprocessing.

func NewDBManager

func NewDBManager(processedStore ProcessedMessageStore, tenant store.Tenant, logger *slog.Logger) *Manager

NewDBManager creates a state manager backed by the runtime database.

func (*Manager) IsProcessed

func (m *Manager) IsProcessed(ctx context.Context, msgKey string) bool

IsProcessed checks if a message has been processed.

func (*Manager) MarkProcessed

func (m *Manager) MarkProcessed(ctx context.Context, msgKey string) error

MarkProcessed marks a message as processed.

type ProcessedMessageStore

type ProcessedMessageStore interface {
	IsMessageProcessed(ctx context.Context, tenant store.Tenant, key string) (bool, error)
	MarkMessageProcessed(ctx context.Context, tenant store.Tenant, key string, at time.Time) error
}

ProcessedMessageStore is the DB persistence surface used by DB-backed state managers.

Jump to

Keyboard shortcuts

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