package client import ( "context" "net/http" "strconv" ) // TaskPriorities lists active priority choices for task forms. func (c *Client) TaskPriorities(ctx context.Context) ([]TaskPriority, *Response, error) { return c.taskPriorities(ctx, "v1/task-priorities") } // AdminTaskPriorities lists all priority catalogue entries. func (c *Client) AdminTaskPriorities(ctx context.Context) ([]TaskPriority, *Response, error) { return c.taskPriorities(ctx, "v1/admin/task-priorities") } func (c *Client) taskPriorities(ctx context.Context, path string) ([]TaskPriority, *Response, error) { var envelope struct { Priorities []TaskPriority `json:"priorities"` } response, err := c.do(ctx, http.MethodGet, path, nil, &envelope) return envelope.Priorities, response, err } // CreateAdminTaskPriority adds an application-wide priority choice. func (c *Client) CreateAdminTaskPriority(ctx context.Context, input TaskPriorityInput) (TaskPriority, *Response, error) { return c.writeTaskPriority(ctx, http.MethodPost, "v1/admin/task-priorities", input) } // UpdateAdminTaskPriority changes an application-wide priority choice. func (c *Client) UpdateAdminTaskPriority(ctx context.Context, id int, input TaskPriorityInput) (TaskPriority, *Response, error) { return c.writeTaskPriority(ctx, http.MethodPatch, "v1/admin/task-priorities/"+strconv.Itoa(id), input) } // DeleteAdminTaskPriority removes an unused priority choice. func (c *Client) DeleteAdminTaskPriority(ctx context.Context, id int) (*Response, error) { return c.do(ctx, http.MethodDelete, "v1/admin/task-priorities/"+strconv.Itoa(id), nil, nil) } func (c *Client) writeTaskPriority(ctx context.Context, method, path string, input TaskPriorityInput) (TaskPriority, *Response, error) { var envelope struct { Priority TaskPriority `json:"priority"` } response, err := c.do(ctx, method, path, input, &envelope) return envelope.Priority, response, err }