task

package
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 17, 2026 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	PriorityHigh       = 1
	PriorityMediumHigh = 2
	PriorityMedium     = 3
	PriorityMediumLow  = 4
	PriorityLow        = 5
)

Priority scale: lower = higher priority 1 = highest, 5 = lowest

View Source
const (
	MinPriority     = 1
	MaxPriority     = 5
	DefaultPriority = 3 // Medium
)

Priority validation constants

Variables

This section is empty.

Functions

func IsValid

func IsValid(task *Task) bool

IsValid returns true if the task passes all validation rules

func NormalizePriority

func NormalizePriority(priority string) int

NormalizePriority standardizes a raw priority string or number into an integer. Returns the normalized priority value (clamped to 1-5) or -1 if invalid.

func PriorityLabel

func PriorityLabel(priority int) string

PriorityLabel returns an emoji-based label for a priority value.

func StatusDisplay

func StatusDisplay(status Status) string

func StatusEmoji

func StatusEmoji(status Status) string

func StatusLabel

func StatusLabel(status Status) string

func StatusToString

func StatusToString(status Status) string

StatusToString converts a Status to its string representation.

func TypeDisplay

func TypeDisplay(taskType Type) string

TypeDisplay returns a formatted display string with label and emoji.

func TypeEmoji

func TypeEmoji(taskType Type) string

TypeEmoji returns the emoji for a task type.

func TypeLabel

func TypeLabel(taskType Type) string

TypeLabel returns a human-readable label for a task type.

Types

type Comment

type Comment struct {
	ID        string
	Author    string
	Text      string
	CreatedAt time.Time
}

Comment represents a comment on a task

type ErrorCode

type ErrorCode string

ErrorCode represents specific validation failure types

const (
	ErrCodeRequired      ErrorCode = "required"
	ErrCodeTooLong       ErrorCode = "too_long"
	ErrCodeTooShort      ErrorCode = "too_short"
	ErrCodeOutOfRange    ErrorCode = "out_of_range"
	ErrCodeInvalidEnum   ErrorCode = "invalid_enum"
	ErrCodeInvalidFormat ErrorCode = "invalid_format"
)

type FieldValidator

type FieldValidator interface {
	ValidateField(task *Task) *ValidationError
}

FieldValidator validates a single field

type PointsValidator

type PointsValidator struct{}

PointsValidator validates story points range (1-maxPoints from config)

func (*PointsValidator) ValidateField

func (v *PointsValidator) ValidateField(task *Task) *ValidationError

type PriorityValidator

type PriorityValidator struct{}

PriorityValidator validates priority range (1-5)

func (*PriorityValidator) ValidateField

func (v *PriorityValidator) ValidateField(task *Task) *ValidationError

type PriorityValue

type PriorityValue int

PriorityValue unmarshals priority from int or string (e.g., "high", "medium-high"). high=1, low=5. Values outside 1-5 range are clamped to boundaries.

func (PriorityValue) MarshalYAML

func (p PriorityValue) MarshalYAML() (interface{}, error)

func (*PriorityValue) UnmarshalYAML

func (p *PriorityValue) UnmarshalYAML(value *yaml.Node) error

type SearchResult

type SearchResult struct {
	Task  *Task
	Score float64 // relevance score (higher = better match)
}

SearchResult represents a task match with relevance score

type Status

type Status string
const (
	StatusBacklog    Status = "backlog"
	StatusTodo       Status = "todo"
	StatusReady      Status = "ready"
	StatusInProgress Status = "in_progress"
	StatusWaiting    Status = "waiting"
	StatusBlocked    Status = "blocked"
	StatusReview     Status = "review"
	StatusDone       Status = "done"
)

func MapStatus

func MapStatus(status string) Status

MapStatus maps a raw status string to a Status constant.

func NormalizeStatus

func NormalizeStatus(status string) Status

NormalizeStatus standardizes a raw status string into a Status.

func StatusColumn

func StatusColumn(status Status) Status

type StatusValidator

type StatusValidator struct{}

StatusValidator validates task status enum

func (*StatusValidator) ValidateField

func (v *StatusValidator) ValidateField(task *Task) *ValidationError

type TagsValue

type TagsValue []string

TagsValue is a custom type for tags that provides lenient YAML unmarshaling. It gracefully handles invalid YAML by defaulting to an empty slice instead of failing.

func (TagsValue) MarshalYAML

func (t TagsValue) MarshalYAML() (interface{}, error)

MarshalYAML implements YAML marshaling for TagsValue. Returns the underlying slice as-is for standard YAML serialization.

func (TagsValue) ToStringSlice

func (t TagsValue) ToStringSlice() []string

ToStringSlice converts TagsValue to []string for use with Task entity.

func (*TagsValue) UnmarshalYAML

func (t *TagsValue) UnmarshalYAML(value *yaml.Node) error

UnmarshalYAML implements custom unmarshaling for tags with lenient error handling. Valid YAML list formats are parsed normally. Invalid formats (scalars, objects, etc.) default to empty slice with a warning log instead of returning an error.

type Task

type Task struct {
	ID          string
	Title       string
	Description string
	Type        Type
	Status      Status
	Tags        []string
	Assignee    string
	Priority    int // lower = higher priority
	Points      int
	Comments    []Comment
	CreatedBy   string // User who initially created the task
	CreatedAt   time.Time
	UpdatedAt   time.Time
	LoadedMtime time.Time // File mtime when loaded (for optimistic locking)
}

Task represents a work item (user story, bug, etc.)

func (*Task) Clone

func (t *Task) Clone() *Task

Clone creates a deep copy of the task

func (*Task) IsValid

func (t *Task) IsValid() bool

IsValid returns true if the task passes all validation

func (*Task) Validate

func (t *Task) Validate() ValidationErrors

Validate validates the task using the standard validator

func (*Task) ValidateField

func (t *Task) ValidateField(fieldName string) *ValidationError

ValidateField validates a single field

type TaskValidator

type TaskValidator struct {
	// contains filtered or unexported fields
}

TaskValidator orchestrates all field validators

func NewTaskValidator

func NewTaskValidator() *TaskValidator

NewTaskValidator creates a validator with standard rules

func (*TaskValidator) Validate

func (tv *TaskValidator) Validate(task *Task) ValidationErrors

Validate runs all validators and accumulates errors

func (*TaskValidator) ValidateField

func (tv *TaskValidator) ValidateField(task *Task, fieldName string) *ValidationError

ValidateField validates a single field by name

type TitleValidator

type TitleValidator struct{}

TitleValidator validates task title

func (*TitleValidator) ValidateField

func (v *TitleValidator) ValidateField(task *Task) *ValidationError

type Type

type Type string

Type represents the type of work item

const (
	TypeStory Type = "story"
	TypeBug   Type = "bug"
	TypeSpike Type = "spike"
	TypeEpic  Type = "epic"
)

func NormalizeType

func NormalizeType(t string) Type

NormalizeType standardizes a raw type string into a Type.

type TypeValidator

type TypeValidator struct{}

TypeValidator validates task type enum

func (*TypeValidator) ValidateField

func (v *TypeValidator) ValidateField(task *Task) *ValidationError

type ValidationError

type ValidationError struct {
	Field   string    // Field name (e.g., "title", "priority")
	Value   any       // The invalid value
	Code    ErrorCode // Machine-readable error code
	Message string    // Human-readable message
}

ValidationError represents a field-level validation failure with rich context

func (*ValidationError) Error

func (e *ValidationError) Error() string

type ValidationErrors

type ValidationErrors []*ValidationError

ValidationErrors is a collection of field-level errors

func QuickValidate

func QuickValidate(task *Task) ValidationErrors

QuickValidate is a convenience function for quick validation

func (ValidationErrors) ByField

func (ve ValidationErrors) ByField(field string) []*ValidationError

ByField returns errors for a specific field

func (ValidationErrors) Error

func (ve ValidationErrors) Error() string

func (ValidationErrors) HasErrors

func (ve ValidationErrors) HasErrors() bool

HasErrors returns true if there are any validation errors

func (ValidationErrors) HasField

func (ve ValidationErrors) HasField(field string) bool

HasField returns true if the field has any errors

type Validator

type Validator interface {
	Validate(task *Task) ValidationErrors
}

Validator is the main validation interface

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL