blob: 55dd03769c44697242aac0009f22319dbc917605 [file] [log] [blame]
iomodod5b4dec2025-07-25 14:31:40 +04001package tm
2
3import (
4 "errors"
5 "fmt"
6)
7
8// Common task management errors
9var (
10 ErrTaskNotFound = errors.New("task not found")
11 ErrOwnerNotFound = errors.New("owner not found")
12 ErrInvalidTaskStatus = errors.New("invalid task status")
13 ErrInvalidTaskPriority = errors.New("invalid task priority")
14 ErrTaskAlreadyCompleted = errors.New("task is already completed")
15 ErrTaskAlreadyArchived = errors.New("task is already archived")
16 ErrTaskNotStarted = errors.New("task is not started")
17 ErrTaskNotInProgress = errors.New("task is not in progress")
18 ErrInvalidOwner = errors.New("invalid owner")
19 ErrInvalidTaskData = errors.New("invalid task data")
20)
21
22// TaskError represents a task-specific error with additional context
23type TaskError struct {
24 TaskID string
25 Op string
26 Err error
27}
28
29func (e *TaskError) Error() string {
30 if e.TaskID != "" {
31 return fmt.Sprintf("task %s: %s: %v", e.TaskID, e.Op, e.Err)
32 }
33 return fmt.Sprintf("%s: %v", e.Op, e.Err)
34}
35
36func (e *TaskError) Unwrap() error {
37 return e.Err
38}
39
40// NewTaskError creates a new TaskError
41func NewTaskError(taskID, op string, err error) *TaskError {
42 return &TaskError{
43 TaskID: taskID,
44 Op: op,
45 Err: err,
46 }
47}