Documentation
¶
Overview ¶
Package view defines shared saved view configurations.
Index ¶
- Constants
- Variables
- func DefaultColumns() []string
- func ValidColumns(columns []string) bool
- func ValidSortOrder(order string) bool
- func ValidType(t string) bool
- func ValidWorkflowSortField(field string) bool
- func ValidWorkspaceScope(scope string, workspace string) bool
- type Store
- type View
- type ViewForStorage
Constants ¶
const ( // TypeKanban renders the view as the Overview Kanban board. TypeKanban = "kanban" // TypeWorkflow filters and sorts the Workflows page. TypeWorkflow = "workflow" )
Render types.
const ( WorkspaceScopeAll = "all" WorkspaceScopeDefault = "default" WorkspaceScopeWorkspace = "workspace" )
Workflow workspace scopes.
const ( WorkflowSortName = "name" WorkflowSortNextRun = "nextRun" SortOrderAscending = "asc" SortOrderDescending = "desc" )
Workflow sort fields and orders.
const ( ColumnQueued = "queued" ColumnRunning = "running" ColumnReview = "review" ColumnDone = "done" ColumnFailed = "failed" )
Kanban columns.
const ( MaxNameLength = 100 MaxDAGNameLength = 255 MaxLabels = 50 MaxLabelLength = 128 MinIntervalDays = 1 MaxIntervalDays = 30 )
Field bounds.
Variables ¶
var ( ErrInvalidViewID = errors.New("view: invalid id") ErrViewNotFound = errors.New("view: not found") ErrViewExists = errors.New("view: already exists") ErrInvalidName = errors.New("view: name is required") ErrNameTooLong = errors.New("view: name too long") ErrDAGNameTooLong = errors.New("view: dagName too long") ErrInvalidInterval = errors.New("view: intervalDays out of range") ErrTooManyLabels = errors.New("view: too many labels") ErrInvalidType = errors.New("view: unknown type") ErrInvalidColumns = errors.New("view: invalid columns") ErrInvalidWorkspaceScope = errors.New("view: invalid workspace scope") ErrInvalidSortField = errors.New("view: invalid sort field") ErrInvalidSortOrder = errors.New("view: invalid sort order") ErrViewChanged = errors.New("view: changed") )
Sentinel errors returned by views and their stores.
Functions ¶
func DefaultColumns ¶
func DefaultColumns() []string
DefaultColumns returns all Kanban columns in their default display order.
func ValidColumns ¶
ValidColumns reports whether columns is a non-empty, duplicate-free subset of the supported Kanban columns.
func ValidSortOrder ¶ added in v2.12.0
ValidSortOrder reports whether order is a supported view sort order.
func ValidWorkflowSortField ¶ added in v2.12.0
ValidWorkflowSortField reports whether field is supported by the Workflows page.
func ValidWorkspaceScope ¶ added in v2.12.0
ValidWorkspaceScope reports whether scope and workspace identify a workflow scope.
Types ¶
type Store ¶
type Store interface {
Create(ctx context.Context, v *View) error
GetByID(ctx context.Context, id string) (*View, error)
List(ctx context.Context) ([]*View, error)
Update(ctx context.Context, v *View, expectedWorkspace string) error
Delete(ctx context.Context, id string, expectedWorkspace string) error
}
Store persists view configurations. Implementations are safe for concurrent use. List returns views ordered by creation time, oldest first.
type View ¶
type View struct {
ID string
Name string
Type string
Workspace string
Labels []string
DAGName string
IntervalDays int
Columns []string
Pinned bool
WorkspaceScope string
SortField string
SortOrder string
ActiveOnly bool
Default bool
CreatedBy string
CreatedAt time.Time
UpdatedAt time.Time
}
View is a shared saved view configuration. CreatedBy is recorded for display only and confers no ownership.
func (*View) Normalize ¶
func (v *View) Normalize()
Normalize trims string fields, drops empty or oversized labels, and applies default values. Call before Validate.
func (*View) ToStorage ¶
func (v *View) ToStorage() *ViewForStorage
ToStorage converts a View to its persistence representation.
type ViewForStorage ¶
type ViewForStorage struct {
ID string `json:"id"`
Name string `json:"name"`
Type string `json:"type"`
Workspace string `json:"workspace,omitempty"`
Labels []string `json:"labels,omitempty"`
DAGName string `json:"dag_name,omitempty"`
IntervalDays int `json:"interval_days"`
Columns []string `json:"columns,omitempty"`
Pinned bool `json:"pinned,omitempty"`
WorkspaceScope string `json:"workspace_scope,omitempty"`
SortField string `json:"sort_field,omitempty"`
SortOrder string `json:"sort_order,omitempty"`
ActiveOnly bool `json:"active_only,omitempty"`
Default bool `json:"default,omitempty"`
CreatedBy string `json:"created_by,omitempty"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
ViewForStorage is the on-disk JSON representation of a View.
func (*ViewForStorage) ToView ¶
func (s *ViewForStorage) ToView() *View
ToView converts a stored representation back to a View.