package taskboard

import (
	"strings"
	"time"
)

func normalizeTaskTimelineCursor(cursor TaskTimelineCursor) (TaskTimelineCursor, error) {
	if cursor.IsZero() {
		return TaskTimelineCursor{}, nil
	}
	trimmedID := strings.TrimSpace(cursor.ID)
	if cursor.Seq < 0 || cursor.CreatedAt.IsZero() || trimmedID == "" {
		return TaskTimelineCursor{}, badRequest("invalid timeline cursor")
	}
	return TaskTimelineCursor{Seq: cursor.Seq, CreatedAt: cursor.CreatedAt.UTC(), ID: trimmedID}, nil
}

func taskTimelineCursorFromItem(seq int64, createdAt time.Time, id string) (TaskTimelineCursor, error) {
	return normalizeTaskTimelineCursor(TaskTimelineCursor{Seq: seq, CreatedAt: createdAt, ID: id})
}
