Documentation
¶
Index ¶
- func IsGitInstalled() bool
- type Config
- type Repository
- func (r *Repository) Begin(ctx context.Context) (core.Transaction, error)
- func (r *Repository) Delete(ctx context.Context, id string) error
- func (r *Repository) Get(ctx context.Context, id string) (core.Note, error)
- func (r *Repository) Initialize(ctx context.Context) error
- func (r *Repository) List(ctx context.Context) ([]core.Note, error)
- func (r *Repository) Save(ctx context.Context, n core.Note) error
- func (r *Repository) Sync(ctx context.Context) error
- type Transaction
- func (t *Transaction) Commit(ctx context.Context, changeReason string) error
- func (t *Transaction) Delete(ctx context.Context, id string) error
- func (t *Transaction) Get(ctx context.Context, id string) (core.Note, error)
- func (t *Transaction) List(ctx context.Context) ([]core.Note, error)
- func (t *Transaction) Rollback(ctx context.Context) error
- func (t *Transaction) Save(ctx context.Context, n core.Note) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func IsGitInstalled ¶
func IsGitInstalled() bool
IsGitInstalled checks if git is available in the system path. This allows consumers to check prerequisite without importing pkg/git directly.
Types ¶
type Repository ¶
type Repository struct {
Path string
// contains filtered or unexported fields
}
Repository implements core.Repository using the filesystem and Git.
func NewRepository ¶
func NewRepository(config Config) *Repository
NewRepository creates a new filesystem-backed repository.
func (*Repository) Begin ¶
func (r *Repository) Begin(ctx context.Context) (core.Transaction, error)
Begin starts a new transaction.
func (*Repository) Delete ¶
func (r *Repository) Delete(ctx context.Context, id string) error
Delete removes a note.
func (*Repository) Initialize ¶
func (r *Repository) Initialize(ctx context.Context) error
Initialize performs the necessary setup for the repository (mkdir, git init).
type Transaction ¶
type Transaction struct {
// contains filtered or unexported fields
}
Transaction implements core.Transaction for the filesystem repository. It uses a buffered approach: changes are staged in memory and only written to disk/git on Commit.
func NewTransaction ¶
func NewTransaction(repo *Repository) *Transaction
NewTransaction creates a new transaction for the repository.
func (*Transaction) Commit ¶
func (t *Transaction) Commit(ctx context.Context, changeReason string) error
Commit applies all staged changes atomically.
func (*Transaction) Delete ¶
func (t *Transaction) Delete(ctx context.Context, id string) error
Delete stages a note for removal.
func (*Transaction) List ¶
List returns all available notes, including staged ones. Changes in the transaction overlay the repository state.