template-monorepo/internal/model/notification/domain/repository/notification.go

34 lines
1.1 KiB
Go
Raw Permalink Normal View History

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
}