| 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, |
| } |
| } |