Implement Column API methods (GetColumns, GetColumn)
- GetColumns returns all columns for a project, sorted by position - GetColumn returns a single column by ID - Returns ErrColumnNotFound for non-existent columns - Comprehensive test coverage including edge cases
This commit is contained in:
parent
7c8ebcc491
commit
2d3be3619c
3 changed files with 214 additions and 1 deletions
41
columns.go
Normal file
41
columns.go
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
package kanboard
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"sort"
|
||||
)
|
||||
|
||||
// GetColumns returns all columns for a project, sorted by position.
|
||||
func (c *Client) GetColumns(ctx context.Context, projectID int) ([]Column, error) {
|
||||
params := map[string]int{"project_id": projectID}
|
||||
|
||||
var result []Column
|
||||
if err := c.call(ctx, "getColumns", params, &result); err != nil {
|
||||
return nil, fmt.Errorf("getColumns: %w", err)
|
||||
}
|
||||
|
||||
// Sort by position
|
||||
sort.Slice(result, func(i, j int) bool {
|
||||
return int(result[i].Position) < int(result[j].Position)
|
||||
})
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// GetColumn returns a column by its ID.
|
||||
// Returns ErrColumnNotFound if the column does not exist.
|
||||
func (c *Client) GetColumn(ctx context.Context, columnID int) (*Column, error) {
|
||||
params := map[string]int{"column_id": columnID}
|
||||
|
||||
var result *Column
|
||||
if err := c.call(ctx, "getColumn", params, &result); err != nil {
|
||||
return nil, fmt.Errorf("getColumn: %w", err)
|
||||
}
|
||||
|
||||
if result == nil {
|
||||
return nil, fmt.Errorf("%w: column %d", ErrColumnNotFound, columnID)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue