feat: add dead letter queue
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
35
internal/deadletter/deadletter.go
Normal file
35
internal/deadletter/deadletter.go
Normal file
@@ -0,0 +1,35 @@
|
||||
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
|
||||
|
||||
}
|
Reference in New Issue
Block a user