34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
|
|
package repository
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
|
||
|
|
"gateway/internal/model/notification/domain/entity"
|
||
|
|
"gateway/internal/model/notification/domain/enum"
|
||
|
|
)
|
||
|
|
|
||
|
|
// NotificationRepository persists notification outbox records.
|
||
|
|
type NotificationRepository interface {
|
||
|
|
Insert(ctx context.Context, data *entity.Notification) error
|
||
|
|
FindByID(ctx context.Context, tenantID, id string) (*entity.Notification, error)
|
||
|
|
FindByIdempotency(ctx context.Context, tenantID string, kind enum.NotifyKind, idempotencyKey string) (*entity.Notification, error)
|
||
|
|
UpdateDelivery(ctx context.Context, tenantID, id string, update *NotificationDeliveryUpdate) error
|
||
|
|
NotificationIndexUP
|
||
|
|
}
|
||
|
|
|
||
|
|
// NotificationDeliveryUpdate is the partial update for delivery outcome.
|
||
|
|
type NotificationDeliveryUpdate struct {
|
||
|
|
Status enum.NotifyStatus
|
||
|
|
Provider string
|
||
|
|
ProviderMessageID string
|
||
|
|
LastError string
|
||
|
|
Attempts int
|
||
|
|
Body string
|
||
|
|
DeliveredAt *int64
|
||
|
|
}
|
||
|
|
|
||
|
|
// NotificationIndexUP migrates notification collection indexes.
|
||
|
|
type NotificationIndexUP interface {
|
||
|
|
Index20260520001UP(ctx context.Context) error
|
||
|
|
}
|