sqlite

package
v0.11.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 10, 2026 License: MIT Imports: 17 Imported by: 0

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

Constants

This section is empty.

Variables

View Source
var ErrNoPlan = errors.New("no inline plan exists")

ErrNoPlan is returned when no inline plan exists for an issue.

Functions

func IsHierarchicalID

func IsHierarchicalID(id string) (isHierarchical bool, parentID string)

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

func MigrationVersion(db *sql.DB) (int64, error)

MigrationVersion returns the current migration version.

func PrepareSearchQuery added in v0.11.0

func PrepareSearchQuery(input string) string

PrepareSearchQuery transforms user input into an FTS5 MATCH query. - Each unquoted term gets a `*` suffix for prefix matching - Quoted phrases are passed through for exact matching - Empty input returns empty string

func RunMigrations

func RunMigrations(db *sql.DB) error

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

func New(path string) (*Store, error)

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

func (s *Store) AddDependency(ctx context.Context, dep *types.Dependency, actor string) error

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

func (s *Store) AddLabelToIssue(ctx context.Context, issueID, label, actor string) error

AddLabelToIssue adds a label to an issue.

func (*Store) Close

func (s *Store) Close() error

Close closes the database connection.

func (*Store) CloseIssue

func (s *Store) CloseIssue(ctx context.Context, id string, reason string, cascade bool, actor string) error

CloseIssue closes an issue. When cascade is false, it checks for open child issues and returns an *types.OpenChildrenError if any are found. When cascade is true, it recursively closes all open descendants leaf-first before closing the target issue. Each cascade-closed child gets a reason of "<reason> (cascade closed by <parent-id>)" where parent-id is the original issue being closed.

func (*Store) CreateIssue

func (s *Store) CreateIssue(ctx context.Context, issue *types.Issue, actor string) error

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

func (s *Store) CreateLabel(ctx context.Context, label *types.Label) error

CreateLabel creates a new global label definition.

func (*Store) CreatePlan added in v0.7.0

func (s *Store) CreatePlan(ctx context.Context, plan *types.Plan) error

CreatePlan creates a new shared plan.

func (*Store) CreateWorkspace

func (s *Store) CreateWorkspace(ctx context.Context, ws *types.Workspace) error

CreateWorkspace creates a new workspace.

func (*Store) DeleteComment

func (s *Store) DeleteComment(ctx context.Context, commentID int64) error

DeleteComment deletes a comment.

func (*Store) DeleteIssue

func (s *Store) DeleteIssue(ctx context.Context, id string) error

DeleteIssue deletes an issue.

func (*Store) DeleteLabel

func (s *Store) DeleteLabel(ctx context.Context, name string) error

DeleteLabel deletes a label.

func (*Store) DeletePlan added in v0.7.0

func (s *Store) DeletePlan(ctx context.Context, id string) error

DeletePlan deletes a plan.

func (*Store) DeleteWorkspace

func (s *Store) DeleteWorkspace(ctx context.Context, idOrName string) error

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

func (s *Store) GetComments(ctx context.Context, issueID string) ([]*types.Comment, error)

GetComments returns all comments for an issue.

func (*Store) GetDependencies

func (s *Store) GetDependencies(ctx context.Context, issueID string) ([]*types.Dependency, error)

GetDependencies returns the dependencies of an issue.

func (*Store) GetDependents

func (s *Store) GetDependents(ctx context.Context, issueID string) ([]*types.Dependency, error)

GetDependents returns issues that depend on the given issue.

func (*Store) GetEvents

func (s *Store) GetEvents(ctx context.Context, issueID string, limit int) ([]*types.Event, error)

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

func (s *Store) GetInlinePlan(ctx context.Context, issueID string) (*types.Comment, error)

GetInlinePlan returns the latest inline plan for an issue.

func (*Store) GetIssue

func (s *Store) GetIssue(ctx context.Context, id string) (*types.Issue, error)

GetIssue retrieves an issue by ID.

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

func (s *Store) GetIssueDetails(ctx context.Context, id string) (*types.IssueDetails, error)

GetIssueDetails retrieves an issue with all its relational data.

func (*Store) GetIssueLabels

func (s *Store) GetIssueLabels(ctx context.Context, issueID string) ([]string, error)

GetIssueLabels returns all labels for an issue.

func (*Store) GetLabel

func (s *Store) GetLabel(ctx context.Context, name string) (*types.Label, error)

GetLabel retrieves a label by name.

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

func (s *Store) GetLinkedIssues(ctx context.Context, planID string) ([]string, error)

GetLinkedIssues returns all issue IDs linked to a plan.

func (*Store) GetLinkedPlans added in v0.7.0

func (s *Store) GetLinkedPlans(ctx context.Context, issueID string) ([]*types.Plan, error)

GetLinkedPlans returns all plans linked to an issue.

func (*Store) GetNextChildID

func (s *Store) GetNextChildID(ctx context.Context, parentID string) (string, error)

GetNextChildID generates the next hierarchical child ID for a given parent. Returns formatted ID as parentID.{counter} (e.g., arc-a3f8e9.1)

func (*Store) GetOpenChildIssues added in v0.11.0

func (s *Store) GetOpenChildIssues(ctx context.Context, parentID string) ([]*types.Issue, error)

GetOpenChildIssues returns open (non-closed) child issues of a given parent via parent-child dependencies.

func (*Store) GetPlan added in v0.7.0

func (s *Store) GetPlan(ctx context.Context, id string) (*types.Plan, error)

GetPlan retrieves a plan by ID.

func (*Store) GetPlanContext added in v0.7.0

func (s *Store) GetPlanContext(ctx context.Context, issueID string) (*types.PlanContext, error)

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

func (s *Store) GetPlanHistory(ctx context.Context, issueID string) ([]*types.Comment, error)

GetPlanHistory returns all plan versions for an issue.

func (*Store) GetReadyWork

func (s *Store) GetReadyWork(ctx context.Context, filter types.WorkFilter) ([]*types.Issue, error)

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

func (s *Store) GetStatistics(ctx context.Context, workspaceID string) (*types.Statistics, error)

GetStatistics returns aggregate statistics for a workspace. Includes counts by status, ready issue count, and average lead time.

func (*Store) GetWorkspace

func (s *Store) GetWorkspace(ctx context.Context, id string) (*types.Workspace, error)

GetWorkspace retrieves a workspace by ID.

func (*Store) GetWorkspaceByName

func (s *Store) GetWorkspaceByName(ctx context.Context, name string) (*types.Workspace, error)

GetWorkspaceByName retrieves a workspace by name.

func (*Store) GetWorkspaceByPath

func (s *Store) GetWorkspaceByPath(ctx context.Context, path string) (*types.Workspace, error)

GetWorkspaceByPath retrieves a workspace by its file system path.

func (*Store) IsBlocked

func (s *Store) IsBlocked(ctx context.Context, issueID string) (bool, []string, error)

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

func (s *Store) LinkIssueToPlan(ctx context.Context, issueID, planID string) error

LinkIssueToPlan creates a link between an issue and a plan.

func (*Store) ListIssues

func (s *Store) ListIssues(ctx context.Context, filter types.IssueFilter) ([]*types.Issue, error)

ListIssues returns issues matching the filter. All filter fields are composed with AND semantics so multiple filters (e.g. --parent + --status) work together via a single sqlc query.

func (*Store) ListLabels

func (s *Store) ListLabels(ctx context.Context) ([]*types.Label, error)

ListLabels returns all global labels.

func (*Store) ListPlans added in v0.7.0

func (s *Store) ListPlans(ctx context.Context, workspaceID string) ([]*types.Plan, error)

ListPlans returns all plans in a workspace.

func (*Store) ListWorkspaces

func (s *Store) ListWorkspaces(ctx context.Context) ([]*types.Workspace, error)

ListWorkspaces returns all workspaces.

func (*Store) Path

func (s *Store) Path() string

Path returns the database file path.

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

func (s *Store) RemoveLabelFromIssue(ctx context.Context, issueID, label, actor string) error

RemoveLabelFromIssue removes a label from an issue.

func (*Store) ReopenIssue

func (s *Store) ReopenIssue(ctx context.Context, id string, actor string) error

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

func (s *Store) UnlinkIssueFromPlan(ctx context.Context, issueID, planID string) error

UnlinkIssueFromPlan removes a link between an issue and a plan.

func (*Store) UpdateComment

func (s *Store) UpdateComment(ctx context.Context, commentID int64, text string) error

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

func (s *Store) UpdateLabel(ctx context.Context, label *types.Label) error

UpdateLabel updates a label.

func (*Store) UpdatePlan added in v0.7.0

func (s *Store) UpdatePlan(ctx context.Context, id, title, content string) error

UpdatePlan updates a plan's title and content.

func (*Store) UpdateWorkspace

func (s *Store) UpdateWorkspace(ctx context.Context, ws *types.Workspace) error

UpdateWorkspace updates a workspace.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL