package repository

import (
	"backend/pkg/notification/domain/entity"
	"context"
)

// HistoryRepository 傳送歷史記錄接口
type HistoryRepository interface {
	// CreateHistory 創建歷史記錄
	CreateHistory(ctx context.Context, history *entity.DeliveryHistory) error

	// UpdateHistory 更新歷史記錄
	UpdateHistory(ctx context.Context, history *entity.DeliveryHistory) error

	// GetHistory 根據ID獲取歷史記錄
	GetHistory(ctx context.Context, id string) (*entity.DeliveryHistory, error)

	// ListHistory 列出歷史記錄
	ListHistory(ctx context.Context, filter HistoryFilter) ([]*entity.DeliveryHistory, error)

	// AddAttempt 添加發送嘗試記錄
	AddAttempt(ctx context.Context, historyID string, attempt entity.DeliveryAttempt) error
}

// HistoryFilter 歷史記錄查詢過濾器
type HistoryFilter struct {
	Type      string                `json:"type"`       // email/sms
	Recipient string                `json:"recipient"`  // 收件人
	Status    entity.DeliveryStatus `json:"status"`     // 狀態
	Provider  string                `json:"provider"`   // 提供商
	StartTime *int64                `json:"start_time"` // 開始時間
	EndTime   *int64                `json:"end_time"`   // 結束時間
	Limit     int                   `json:"limit"`      // 限制數量
	Offset    int                   `json:"offset"`     // 偏移量
}
