package sqlite import ( "fmt" "github.com/steveyegge/beads/internal/types" ) // validatePriority validates a priority value func validatePriority(value interface{}) error { if priority, ok := value.(int); ok { if priority < 0 || priority > 4 { return fmt.Errorf("priority must be between 0 and 4 (got %d)", priority) } } return nil } // validateStatus validates a status value func validateStatus(value interface{}) error { if status, ok := value.(string); ok { if !types.Status(status).IsValid() { return fmt.Errorf("invalid status: %s", status) } } return nil } // validateIssueType validates an issue type value func validateIssueType(value interface{}) error { if issueType, ok := value.(string); ok { if !types.IssueType(issueType).IsValid() { return fmt.Errorf("invalid issue type: %s", issueType) } } return nil } // validateTitle validates a title value func validateTitle(value interface{}) error { if title, ok := value.(string); ok { if len(title) == 0 || len(title) > 500 { return fmt.Errorf("title must be 1-500 characters") } } return nil } // validateEstimatedMinutes validates an estimated_minutes value func validateEstimatedMinutes(value interface{}) error { if mins, ok := value.(int); ok { if mins < 0 { return fmt.Errorf("estimated_minutes cannot be negative") } } return nil } // fieldValidators maps field names to their validation functions var fieldValidators = map[string]func(interface{}) error{ "priority": validatePriority, "status": validateStatus, "issue_type": validateIssueType, "title": validateTitle, "estimated_minutes": validateEstimatedMinutes, } // validateFieldUpdate validates a field update value func validateFieldUpdate(key string, value interface{}) error { if validator, ok := fieldValidators[key]; ok { return validator(value) } return nil }