package repo

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

func SelectIDOnly() repoopt.Option {
	return &repoopt.Select{
		Select: []string{"id"},
	}
}

func VersionIn(versions []string) repoopt.Option {
	return &repoopt.Filter[string]{
		Column: "version_to_be_upgraded",
		Values: versions,
	}
}

func CloudProviderIn(cps []string) repoopt.Option {
	return &repoopt.Filter[string]{
		Column: "cloud_provider",
		Values: cps,
	}
}

func StatusIn(statuses []entity.TaskStatus) repoopt.Option {
	return &repoopt.Filter[entity.TaskStatus]{
		Column: "status",
		Values: statuses,
	}
}

func 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)
}
