package workflow

import "time"

// WorkflowSchedule is a struct that contains the scheduling information of a workflow
type ScheduleMode int

const (
	TASK ScheduleMode = iota
	SERVICE
)

/*
* WorkflowSchedule is a struct that contains the scheduling information of a workflow
* It contains the mode of the schedule (Task or Service), the name of the schedule, the start and end time of the schedule and the cron expression
 */
type WorkflowSchedule struct {
	Mode  int64      `json:"mode" bson:"mode" validate:"required"`               // Mode is the mode of the schedule (Task or Service)
	Name  string     `json:"name" bson:"name" validate:"required"`               // Name is the name of the schedule
	Start *time.Time `json:"start" bson:"start" validate:"required,ltfield=End"` // Start is the start time of the schedule, is required and must be less than the End time
	End   *time.Time `json:"end,omitempty" bson:"end,omitempty"`                 // End is the end time of the schedule
	Cron  string     `json:"cron,omitempty" bson:"cron,omitempty"`               // here the cron format : ss mm hh dd MM dw task
}
