package models

type Parameter struct {
	Name  string `yaml:"name,omitempty"`
	Value string `yaml:"value,omitempty"`
}

type Container struct {
	Image        string        `yaml:"image"`
	Command      []string      `yaml:"command,omitempty,flow"`
	Args         []string      `yaml:"args,omitempty,flow"`
	VolumeMounts []VolumeMount `yaml:"volumeMounts,omitempty"`
}

type VolumeMount struct {
	Name      string `yaml:"name"`
	MountPath string `yaml:"mountPath"`
}

type Task struct {
	Name         string   `yaml:"name"`
	Template     string   `yaml:"template"`
	Dependencies []string `yaml:"dependencies,omitempty"`
	Arguments    struct {
		Parameters []Parameter `yaml:"parameters,omitempty"`
	} `yaml:"arguments,omitempty"`
}

type Dag struct {
	Tasks []Task `yaml:"tasks,omitempty"`
}

type Template struct {
	Name   string `yaml:"name"`
	Inputs struct {
		Parameters []Parameter `yaml:"parameters"`
	} `yaml:"inputs,omitempty"`
	Container Container `yaml:"container,omitempty"`
	Dag       Dag       `yaml:"dag,omitempty"`
}
