orbis/internal/deadletter/deadletter.go

36 lines
742 B
Go
Raw Normal View History

2025-01-19 11:33:38 +01:00
package deadletter
import (
"context"
"fmt"
"log/slog"
"git.front.kjuulh.io/kjuulh/orbis/internal/deadletter/repositories"
"github.com/google/uuid"
"github.com/jackc/pgx/v5/pgxpool"
)
type DeadLetter struct {
db *pgxpool.Pool
logger *slog.Logger
}
func NewDeadLetter(db *pgxpool.Pool, logger *slog.Logger) *DeadLetter {
return &DeadLetter{
db: db,
logger: logger,
}
}
func (d *DeadLetter) InsertDeadLetter(ctx context.Context, schedule uuid.UUID) error {
repo := repositories.New(d.db)
d.logger.WarnContext(ctx, "deadlettering schedule", "schedule", schedule)
if err := repo.InsertDeadLetter(ctx, schedule); err != nil {
return fmt.Errorf("failed to insert item into dead letter: %w", err)
}
return nil
}