Add task manager interface
Change-Id: I7a2f4b20907ba4bb12c900688aef059789884c1d
diff --git a/server/tm/errors.go b/server/tm/errors.go
new file mode 100644
index 0000000..55dd037
--- /dev/null
+++ b/server/tm/errors.go
@@ -0,0 +1,47 @@
+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,
+ }
+}