package workspace import ( "fmt" "io/fs" "os" "git.michelsen.id/phill/chron/chron-note/internal/domain" ) func (ws *Workspace) ListObjectIDs() ([]domain.ObjectID, error) { entries, err := os.ReadDir(ws.Dir) if err != nil { return nil, fmt.Errorf("readdir workspace dir: %w", err) } out := make([]domain.ObjectID, 0, len(entries)) for _, e := range entries { if e.IsDir() { continue } info, err := e.Info() if err != nil { return nil, fmt.Errorf("stat workspace entry: %w", err) } if !info.Mode().IsRegular() { continue } id, err := domain.ParseObjectID(e.Name()) if err != nil { continue } out = append(out, id) } return out, nil } func (ws *Workspace) Stat(id domain.ObjectID) (fs.FileInfo, error) { fi, err := os.Stat(ws.ObjectPath(id)) if err != nil { return nil, fmt.Errorf("stat object %s: %w", id.String(), err) } return fi, nil }