package email

import (
	"github.com/tidbcloud/devops/pkg/infra/utils/pointer"
	"github.com/tidbcloud/devops/pkg/infra/utils/repoopt"
)

type opts struct{}

func (opt opts) ReasonLike(reason string) repoopt.Option {
	return &repoopt.Filter[string]{
		Column: "reason",
		Like:   pointer.Pointer("%" + reason + "%"),
	}
}

func (opt opts) FromAddressIs(fromAddr string) repoopt.Option {
	return &repoopt.Filter[string]{
		Column: "from_address",
		Value:  pointer.Pointer(fromAddr),
	}
}

func (opt opts) NameIs(name string) repoopt.Option {
	return &repoopt.Filter[string]{
		Column: "name",
		Value:  pointer.Pointer(name),
	}
}

func (opt opts) WithPager(page int, perPage int) repoopt.Option {
	pager := &repoopt.Pager{
		Page:    page,
		PerPage: perPage,
	}
	order := &repoopt.Order{
		Column: "created_at",
		Desc:   true,
	}
	return repoopt.Aggregate(pager, order)
}
