store

package
v0.10.2 Latest Latest
Warning

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

Go to latest
Published: May 29, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

View Source
const (
	StatusIDInProgress int64 = 1
	StatusIDMerged     int64 = 2
	StatusIDClosed     int64 = 3
)

StatusID* constants are the integer primary keys for the seeded rows in the statuses table (see migrations/).

Variables

This section is empty.

Functions

func BranchFieldOrEmpty added in v0.7.2

func BranchFieldOrEmpty(b *BranchRow, fn func(*BranchRow) string) string

BranchFieldOrEmpty returns fn(b) or "∅" when b is nil.

func TrackerStatusOrNA added in v0.7.2

func TrackerStatusOrNA(s *string) string

TrackerStatusOrNA returns *s or "N.A." when s is nil.

Types

type Branch

type Branch struct {
	Name      string
	IssueID   int64
	Type      string
	StatusID  int64
	CreatedAt time.Time
	MergedAt  *time.Time
}

Branch represents a tracked branch record. The branch's full git ref name is its primary key.

type BranchRow

type BranchRow struct {
	IssueID    int64        `json:"issue_id"`
	IssueSlug  string       `json:"issue_slug"`
	Title      string       `json:"title"`
	BranchName string       `json:"branch_name"`
	Type       string       `json:"type"`
	Status     BranchStatus `json:"status"`
	CreatedAt  time.Time    `json:"created_at"`
}

BranchRow is the joined result of one branch with its parent issue and status.

type BranchStatus

type BranchStatus string

BranchStatus is the typed string representation of the statuses table.

const (
	BranchStatusInProgress BranchStatus = "in_progress"
	BranchStatusMerged     BranchStatus = "merged"
	BranchStatusClosed     BranchStatus = "closed"
	BranchStatusAll        BranchStatus = "" // sentinel: no WHERE filter; not a DB value
)

type CommandHistoryRow added in v0.8.0

type CommandHistoryRow struct {
	ID        int64
	Payload   json.RawMessage // raw JSON; caller unmarshals into the shape they need
	CreatedAt time.Time
}

CommandHistoryRow is one row from the command_history table.

type Issue

type Issue struct {
	ID int64
	// tracker string ID: "ABC-42", "42", …
	IDSlug      string
	Title       string
	StatusID    int64
	TrackerType *string // nil = manual entry; non-nil = tracker type (e.g. "redmine")
}

Issue represents a tracked issue record.

type IssueRow added in v0.3.0

type IssueRow struct {
	IssueSlug     string     `json:"issue_slug"`
	Title         string     `json:"title"`
	Project       string     `json:"project"`        // tracker project / repo; empty when unknown
	TrackerStatus *string    `json:"tracker_status"` // nil → display "N.A."
	Branch        *BranchRow `json:"branch"`         // nil → not started locally
}

IssueRow is the unified display row for git zf issue list. It composes an issue identity with an optional local branch.

type Store

type Store struct {
	// contains filtered or unexported fields
}

Store wraps a SQLite database for branch and issue persistence.

func Open

func Open(ctx context.Context, dir string) (*Store, error)

Open opens (or creates) the SQLite database at dir/[dbName] and runs pending migrations.

func OpenRepo added in v0.7.2

func OpenRepo(ctx context.Context) (*Store, error)

OpenRepo opens the local store inside the current git repository's .git directory. Resolves the real git dir via git.Client.GitDir() so it works in regular repos, submodules (where <worktree>/.git is a gitlink file), and linked worktrees alike.

func (*Store) Close

func (s *Store) Close() error

Close closes the underlying database connection.

func (*Store) DeleteBranch

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

DeleteBranch removes the branch record identified by name.

func (*Store) InsertCommandHistory added in v0.8.0

func (s *Store) InsertCommandHistory(ctx context.Context, command string, payload any) error

InsertCommandHistory records one completed form submission. payload is marshalled to JSON internally; it must be JSON-serialisable.

func (*Store) InsertIssueWithBranch

func (s *Store) InsertIssueWithBranch(ctx context.Context, issue *Issue, branch *Branch) error

InsertIssueWithBranch inserts an issue and its linked branch in a single transaction.

func (*Store) ListBranches

func (s *Store) ListBranches(ctx context.Context, status BranchStatus) ([]BranchRow, error)

ListBranches returns all branches joined with their issue and status, ordered by created_at DESC. BranchStatusAll returns every row.

func (*Store) ListBranchesByIssueSlugs added in v0.3.0

func (s *Store) ListBranchesByIssueSlugs(ctx context.Context, slugs []string) (map[string]BranchRow, error)

ListBranchesByIssueSlugs returns a map[id_slug]BranchRow for the given slugs. Uses a single SELECT … WHERE i.id_slug IN (…). Returns an empty map for empty input.

func (*Store) ListCommandHistory added in v0.8.0

func (s *Store) ListCommandHistory(ctx context.Context, command string, limit int) ([]CommandHistoryRow, error)

ListCommandHistory returns the most recent limit entries for command, newest-first.

func (*Store) UpdateBranchStatus

func (s *Store) UpdateBranchStatus(ctx context.Context, name string, statusID int64, mergedAt *time.Time) error

UpdateBranchStatus updates a branch's status. mergedAt must be non-nil when statusID == 2 (merged); the enforce_merged_at trigger rejects nil.

func (*Store) UpdateIssueStatus

func (s *Store) UpdateIssueStatus(ctx context.Context, issueID, statusID int64) error

UpdateIssueStatus updates an issue's status.

Jump to

Keyboard shortcuts

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