package options

import "github.com/tidbcloud/pov-service/internal/model"

type ScriptOptions struct {
}

func NewListScriptOption() ListOption[ScriptOptions] {
	return ListOption[ScriptOptions]{}
}

type ScriptExecOptions struct {
}

func NewListScriptExecOption() ListOption[ScriptExecOptions] {
	return ListOption[ScriptExecOptions]{}
}

func TestID(
	testID string,
) ColumnOption {
	return ColumnOption{
		Column: "test_id",
		Value:  testID,
	}
}

func Status(
	status string,
) ColumnOption {
	return ColumnOption{
		Column: "status",
		Value:  status,
	}
}

func Statuses(
	statuses ...model.ExecStatus,
) ColumnOption {
	return ColumnOption{
		Column: "status",
		Values: ConvertStringsToInterface(ConvertStatusTypesToStrings(statuses)),
	}
}

func ConvertStatusTypesToStrings(types []model.ExecStatus) []string {
	stringSlice := make([]string, len(types))
	for i, v := range types {
		stringSlice[i] = string(v)
	}
	return stringSlice
}
