fs

package
v0.8.0 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2025 License: AGPL-3.0 Imports: 16 Imported by: 0

Documentation

Index

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.

Types

type Config

type Config struct {
	Path        string
	AutoInit    bool
	Gitless     bool
	MustExist   bool
	Logger      *slog.Logger
	SystemDir   string            // e.g. ".loam"
	IDMap       map[string]string // Map filename -> ID column name (e.g. "users.csv": "email"). User must ensure uniqueness of values in this column.
	MetadataKey string            // If set, metadata will be nested under this key in JSON/YAML (e.g. "meta" or "frontmatter"). Contents will be in "content" (unless empty).
}

Config holds the configuration for the filesystem repository.

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 document.

func (*Repository) Get

func (r *Repository) Get(ctx context.Context, id string) (core.Document, error)

Get retrieves a document from the filesystem.

func (*Repository) Initialize

func (r *Repository) Initialize(ctx context.Context) error

Initialize performs the necessary setup for the repository (mkdir, git init).

func (*Repository) List

func (r *Repository) List(ctx context.Context) ([]core.Document, error)

List scans the directory for all documents.

func (*Repository) Save

func (r *Repository) Save(ctx context.Context, doc core.Document) error

Save persists a document to the filesystem and commits it to Git. If the document belongs to a collection (e.g. CSV), it updates the specific row.

func (*Repository) Sync

func (r *Repository) Sync(ctx context.Context) error

Sync synchronizes the repository with its remote.

type Transaction

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

Transaction implements core.Transaction for the filesystem.

func NewTransaction

func NewTransaction(repo *Repository) *Transaction

NewTransaction creates a new transaction.

func (*Transaction) Commit

func (t *Transaction) Commit(ctx context.Context, changeReason string) error

Commit applies all staged changes.

func (*Transaction) Delete

func (t *Transaction) Delete(ctx context.Context, id string) error

Delete stages a document for deletion.

func (*Transaction) Get

func (t *Transaction) Get(ctx context.Context, id string) (core.Document, error)

Get retrieves a document, favoring staged changes.

func (*Transaction) Rollback

func (t *Transaction) Rollback(ctx context.Context) error

Rollback discards all staged changes.

func (*Transaction) Save

func (t *Transaction) Save(ctx context.Context, doc core.Document) error

Save stages a document for saving.

Jump to

Keyboard shortcuts

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