blob: 55dd03769c44697242aac0009f22319dbc917605 [file] [log] [blame]
package tm
import (
"errors"
"fmt"
)
// Common task management errors
var (
ErrTaskNotFound = errors.New("task not found")
ErrOwnerNotFound = errors.New("owner not found")
ErrInvalidTaskStatus = errors.New("invalid task status")
ErrInvalidTaskPriority = errors.New("invalid task priority")
ErrTaskAlreadyCompleted = errors.New("task is already completed")
ErrTaskAlreadyArchived = errors.New("task is already archived")
ErrTaskNotStarted = errors.New("task is not started")
ErrTaskNotInProgress = errors.New("task is not in progress")
ErrInvalidOwner = errors.New("invalid owner")
ErrInvalidTaskData = errors.New("invalid task data")
)
// TaskError represents a task-specific error with additional context
type TaskError struct {
TaskID string
Op string
Err error
}
func (e *TaskError) Error() string {
if e.TaskID != "" {
return fmt.Sprintf("task %s: %s: %v", e.TaskID, e.Op, e.Err)
}
return fmt.Sprintf("%s: %v", e.Op, e.Err)
}
func (e *TaskError) Unwrap() error {
return e.Err
}
// NewTaskError creates a new TaskError
func NewTaskError(taskID, op string, err error) *TaskError {
return &TaskError{
TaskID: taskID,
Op: op,
Err: err,
}
}