Second checkpoint
This commit is contained in:
26
internal/repository/postgres/event.go
Normal file
26
internal/repository/postgres/event.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package postgres
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
// EventRepository records events for the generic example consumer. It is part of
|
||||
// the messaging scaffold; remove it alongside the example flow.
|
||||
type EventRepository struct {
|
||||
pool *pgxpool.Pool
|
||||
}
|
||||
|
||||
// NewEventRepository returns an EventRepository backed by the given pool.
|
||||
func NewEventRepository(pool *pgxpool.Pool) *EventRepository {
|
||||
return &EventRepository{pool: pool}
|
||||
}
|
||||
|
||||
// Record inserts an event row. It satisfies rabbitmq.EventRecorder.
|
||||
func (r *EventRepository) Record(ctx context.Context, kind string, payload json.RawMessage) error {
|
||||
_, err := r.pool.Exec(ctx,
|
||||
`INSERT INTO events (kind, payload) VALUES ($1, $2)`, kind, payload)
|
||||
return mapError(err)
|
||||
}
|
||||
Reference in New Issue
Block a user