package taskqueue

import "time"

const (
	RETRYSTRATEGY_REQUEUE    = "requeue"
	RETRYSTRATEGY_REGENERATE = "regenerate"
)

type Task struct {
	Timestamp     time.Time
	createAt      time.Time
	timeout       time.Duration
	Step          time.Duration
	retriedCount  int
	firstFailedAt time.Time
	EndTimestamp  time.Time
	AckTimestamp  time.Time // this field should only be set by users.
	retryStrategy string
}

func (t *Task) SetRetryStrategy(strategy string) {
	t.retryStrategy = strategy
}

func (t *Task) RetryStrategy() string {
	return t.retryStrategy
}

func (t *Task) AddRetriedCount() {
	t.retriedCount++
}

func (t *Task) GetRetriedCount() int {
	return t.retriedCount
}

func (t *Task) MarkFailedAt(now time.Time) {
	if t.firstFailedAt.IsZero() {
		t.firstFailedAt = now
	}
}

func (t *Task) FirstFailedAt() time.Time {
	return t.firstFailedAt
}
