36 lines
742 B
Go
36 lines
742 B
Go
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
|
|
|
|
}
|