Documentation
¶
Overview ¶
Package sqlite implements the storage interface using SQLite. This file handles comment and event operations.
Package sqlite implements the storage interface using SQLite. This file handles dependency (relationship) operations between issues.
Package sqlite implements the storage interface using SQLite. This file handles label operations including label definitions and issue-label associations.
Package sqlite implements the storage interface using SQLite. This file handles database schema migrations using goose.
Package sqlite implements the storage interface using SQLite. This file handles ready work queries, blocked issue detection, and workspace statistics.
Package sqlite implements the storage interface using SQLite.
Index ¶
- Variables
- func IsHierarchicalID(id string) (isHierarchical bool, parentID string)
- func MigrationVersion(db *sql.DB) (int64, error)
- func RunMigrations(db *sql.DB) error
- type Store
- func (s *Store) AddComment(ctx context.Context, issueID, author, text string) (*types.Comment, error)
- func (s *Store) AddDependency(ctx context.Context, dep *types.Dependency, actor string) error
- func (s *Store) AddLabelToIssue(ctx context.Context, issueID, label, actor string) error
- func (s *Store) Close() error
- func (s *Store) CloseIssue(ctx context.Context, id string, reason string, actor string) error
- func (s *Store) CreateIssue(ctx context.Context, issue *types.Issue, actor string) error
- func (s *Store) CreateLabel(ctx context.Context, label *types.Label) error
- func (s *Store) CreatePlan(ctx context.Context, plan *types.Plan) error
- func (s *Store) CreateWorkspace(ctx context.Context, ws *types.Workspace) error
- func (s *Store) DeleteComment(ctx context.Context, commentID int64) error
- func (s *Store) DeleteIssue(ctx context.Context, id string) error
- func (s *Store) DeleteLabel(ctx context.Context, name string) error
- func (s *Store) DeletePlan(ctx context.Context, id string) error
- func (s *Store) DeleteWorkspace(ctx context.Context, idOrName string) error
- func (s *Store) GetBlockedIssues(ctx context.Context, filter types.WorkFilter) ([]*types.BlockedIssue, error)
- func (s *Store) GetComments(ctx context.Context, issueID string) ([]*types.Comment, error)
- func (s *Store) GetDependencies(ctx context.Context, issueID string) ([]*types.Dependency, error)
- func (s *Store) GetDependents(ctx context.Context, issueID string) ([]*types.Dependency, error)
- func (s *Store) GetEvents(ctx context.Context, issueID string, limit int) ([]*types.Event, error)
- func (s *Store) GetInlinePlan(ctx context.Context, issueID string) (*types.Comment, error)
- func (s *Store) GetIssue(ctx context.Context, id string) (*types.Issue, error)
- func (s *Store) GetIssueByExternalRef(ctx context.Context, externalRef string) (*types.Issue, error)
- func (s *Store) GetIssueDetails(ctx context.Context, id string) (*types.IssueDetails, error)
- func (s *Store) GetIssueLabels(ctx context.Context, issueID string) ([]string, error)
- func (s *Store) GetLabel(ctx context.Context, name string) (*types.Label, error)
- func (s *Store) GetLabelsForIssues(ctx context.Context, issueIDs []string) (map[string][]string, error)
- func (s *Store) GetLinkedIssues(ctx context.Context, planID string) ([]string, error)
- func (s *Store) GetLinkedPlans(ctx context.Context, issueID string) ([]*types.Plan, error)
- func (s *Store) GetNextChildID(ctx context.Context, parentID string) (string, error)
- func (s *Store) GetPlan(ctx context.Context, id string) (*types.Plan, error)
- func (s *Store) GetPlanContext(ctx context.Context, issueID string) (*types.PlanContext, error)
- func (s *Store) GetPlanHistory(ctx context.Context, issueID string) ([]*types.Comment, error)
- func (s *Store) GetReadyWork(ctx context.Context, filter types.WorkFilter) ([]*types.Issue, error)
- func (s *Store) GetStatistics(ctx context.Context, workspaceID string) (*types.Statistics, error)
- func (s *Store) GetWorkspace(ctx context.Context, id string) (*types.Workspace, error)
- func (s *Store) GetWorkspaceByName(ctx context.Context, name string) (*types.Workspace, error)
- func (s *Store) GetWorkspaceByPath(ctx context.Context, path string) (*types.Workspace, error)
- func (s *Store) IsBlocked(ctx context.Context, issueID string) (bool, []string, error)
- func (s *Store) LinkIssueToPlan(ctx context.Context, issueID, planID string) error
- func (s *Store) ListIssues(ctx context.Context, filter types.IssueFilter) ([]*types.Issue, error)
- func (s *Store) ListLabels(ctx context.Context) ([]*types.Label, error)
- func (s *Store) ListPlans(ctx context.Context, workspaceID string) ([]*types.Plan, error)
- func (s *Store) ListWorkspaces(ctx context.Context) ([]*types.Workspace, error)
- func (s *Store) Path() string
- func (s *Store) RemoveDependency(ctx context.Context, issueID, dependsOnID string, actor string) error
- func (s *Store) RemoveLabelFromIssue(ctx context.Context, issueID, label, actor string) error
- func (s *Store) ReopenIssue(ctx context.Context, id string, actor string) error
- func (s *Store) SetInlinePlan(ctx context.Context, issueID, author, text string) (*types.Comment, error)
- func (s *Store) UnlinkIssueFromPlan(ctx context.Context, issueID, planID string) error
- func (s *Store) UpdateComment(ctx context.Context, commentID int64, text string) error
- func (s *Store) UpdateIssue(ctx context.Context, id string, updates map[string]any, actor string) error
- func (s *Store) UpdateLabel(ctx context.Context, label *types.Label) error
- func (s *Store) UpdatePlan(ctx context.Context, id, title, content string) error
- func (s *Store) UpdateWorkspace(ctx context.Context, ws *types.Workspace) error
Constants ¶
This section is empty.
Variables ¶
var ErrNoPlan = errors.New("no inline plan exists")
ErrNoPlan is returned when no inline plan exists for an issue.
Functions ¶
func IsHierarchicalID ¶
IsHierarchicalID checks if an issue ID is hierarchical (has a parent). Hierarchical IDs have the format {parentID}.{N} where N is a numeric child suffix. Returns true and the parent ID if hierarchical, false and empty string otherwise.
func MigrationVersion ¶
MigrationVersion returns the current migration version.
func RunMigrations ¶
RunMigrations applies all pending database migrations.
Types ¶
type Store ¶
type Store struct {
// contains filtered or unexported fields
}
Store implements the storage.Storage interface using SQLite.
func New ¶
New creates a new SQLite store at the given path. If the path is empty, uses ~/.arc/data.db
func (*Store) AddComment ¶
func (s *Store) AddComment(ctx context.Context, issueID, author, text string) (*types.Comment, error)
AddComment adds a comment to an issue and records a corresponding event.
func (*Store) AddDependency ¶
AddDependency adds a dependency between two issues. It validates that the issue does not depend on itself and that the dependency type is valid.
func (*Store) AddLabelToIssue ¶
AddLabelToIssue adds a label to an issue.
func (*Store) CloseIssue ¶
CloseIssue closes an issue.
func (*Store) CreateIssue ¶
CreateIssue creates a new issue. If ParentID is set, generates a hierarchical child ID (e.g., parent.1) and automatically creates a parent-child dependency.
func (*Store) CreateLabel ¶
CreateLabel creates a new global label definition.
func (*Store) CreatePlan ¶ added in v0.7.0
CreatePlan creates a new shared plan.
func (*Store) CreateWorkspace ¶
CreateWorkspace creates a new workspace.
func (*Store) DeleteComment ¶
DeleteComment deletes a comment.
func (*Store) DeleteIssue ¶
DeleteIssue deletes an issue.
func (*Store) DeleteLabel ¶
DeleteLabel deletes a label.
func (*Store) DeletePlan ¶ added in v0.7.0
DeletePlan deletes a plan.
func (*Store) DeleteWorkspace ¶
DeleteWorkspace deletes a workspace and all its issues. Accepts either workspace ID (e.g., "ws-00blnw") or name (e.g., "my-project-a1b2c3").
func (*Store) GetBlockedIssues ¶
func (s *Store) GetBlockedIssues(ctx context.Context, filter types.WorkFilter) ([]*types.BlockedIssue, error)
GetBlockedIssues returns issues that are blocked by other issues. For each blocked issue, it also fetches the IDs of the issues blocking it.
func (*Store) GetComments ¶
GetComments returns all comments for an issue.
func (*Store) GetDependencies ¶
GetDependencies returns the dependencies of an issue.
func (*Store) GetDependents ¶
GetDependents returns issues that depend on the given issue.
func (*Store) GetEvents ¶
GetEvents returns the event history for an issue, ordered by creation time. Defaults to a limit of 50 events if limit is zero or negative.
func (*Store) GetInlinePlan ¶ added in v0.7.0
GetInlinePlan returns the latest inline plan for an issue.
func (*Store) GetIssueByExternalRef ¶
func (s *Store) GetIssueByExternalRef(ctx context.Context, externalRef string) (*types.Issue, error)
GetIssueByExternalRef retrieves an issue by its external reference.
func (*Store) GetIssueDetails ¶
GetIssueDetails retrieves an issue with all its relational data.
func (*Store) GetIssueLabels ¶
GetIssueLabels returns all labels for an issue.
func (*Store) GetLabelsForIssues ¶
func (s *Store) GetLabelsForIssues(ctx context.Context, issueIDs []string) (map[string][]string, error)
GetLabelsForIssues fetches labels for multiple issues in a single query. Returns a map of issue_id -> []labels
func (*Store) GetLinkedIssues ¶ added in v0.7.0
GetLinkedIssues returns all issue IDs linked to a plan.
func (*Store) GetLinkedPlans ¶ added in v0.7.0
GetLinkedPlans returns all plans linked to an issue.
func (*Store) GetNextChildID ¶
GetNextChildID generates the next hierarchical child ID for a given parent. Returns formatted ID as parentID.{counter} (e.g., arc-a3f8e9.1)
func (*Store) GetPlanContext ¶ added in v0.7.0
GetPlanContext returns the complete plan context for an issue. This includes inline plan, parent plan (from parent-child deps), and shared plans.
func (*Store) GetPlanHistory ¶ added in v0.7.0
GetPlanHistory returns all plan versions for an issue.
func (*Store) GetReadyWork ¶
GetReadyWork returns issues that are ready to work on (not blocked). Results are sorted according to the filter's SortPolicy (hybrid, priority, or oldest). Additional filters for issue type, priority, assignee, and status are applied in-memory.
func (*Store) GetStatistics ¶
GetStatistics returns aggregate statistics for a workspace. Includes counts by status, ready issue count, and average lead time.
func (*Store) GetWorkspace ¶
GetWorkspace retrieves a workspace by ID.
func (*Store) GetWorkspaceByName ¶
GetWorkspaceByName retrieves a workspace by name.
func (*Store) GetWorkspaceByPath ¶
GetWorkspaceByPath retrieves a workspace by its file system path.
func (*Store) IsBlocked ¶
IsBlocked checks if an issue is blocked by any open issues. Returns true and the list of blocking issue IDs if blocked, false otherwise.
func (*Store) LinkIssueToPlan ¶ added in v0.7.0
LinkIssueToPlan creates a link between an issue and a plan.
func (*Store) ListIssues ¶
ListIssues returns issues matching the filter.
func (*Store) ListLabels ¶
ListLabels returns all global labels.
func (*Store) ListWorkspaces ¶
ListWorkspaces returns all workspaces.
func (*Store) RemoveDependency ¶
func (s *Store) RemoveDependency(ctx context.Context, issueID, dependsOnID string, actor string) error
RemoveDependency removes a dependency between two issues.
func (*Store) RemoveLabelFromIssue ¶
RemoveLabelFromIssue removes a label from an issue.
func (*Store) ReopenIssue ¶
ReopenIssue reopens a closed issue.
func (*Store) SetInlinePlan ¶ added in v0.7.0
func (s *Store) SetInlinePlan(ctx context.Context, issueID, author, text string) (*types.Comment, error)
SetInlinePlan sets or updates an inline plan comment on an issue. If a plan already exists, a new version is created (preserving history).
func (*Store) UnlinkIssueFromPlan ¶ added in v0.7.0
UnlinkIssueFromPlan removes a link between an issue and a plan.
func (*Store) UpdateComment ¶
UpdateComment updates a comment's text.
func (*Store) UpdateIssue ¶
func (s *Store) UpdateIssue(ctx context.Context, id string, updates map[string]any, actor string) error
UpdateIssue updates an issue with the given updates.
func (*Store) UpdateLabel ¶
UpdateLabel updates a label.
func (*Store) UpdatePlan ¶ added in v0.7.0
UpdatePlan updates a plan's title and content.