diff options
| author | 2026-03-03 22:49:24 +0800 | |
|---|---|---|
| committer | 2026-03-03 22:52:47 +0800 | |
| commit | 6378da9dcf8d991a00ee410bb5408231861d90c0 (patch) | |
| tree | 5427fbc11b79a683598c02cdcdc81048423c92f2 /reachability/errors.go | |
| parent | config: Fix lints (diff) | |
| signature | No signature | |
reachability: Refactor v0.1.41
Diffstat (limited to 'reachability/errors.go')
| -rw-r--r-- | reachability/errors.go | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/reachability/errors.go b/reachability/errors.go new file mode 100644 index 00000000..e52bf0a4 --- /dev/null +++ b/reachability/errors.go @@ -0,0 +1,37 @@ +package reachability + +import ( + "fmt" + + "codeberg.org/lindenii/furgit/objectid" + "codeberg.org/lindenii/furgit/objecttype" +) + +// ErrObjectMissing indicates that a referenced object is absent from the store. +type ErrObjectMissing struct { + OID objectid.ObjectID +} + +func (e *ErrObjectMissing) Error() string { + return fmt.Sprintf("reachability: missing object %s", e.OID) +} + +// ErrObjectType indicates that a referenced object has a different type than +// what traversal expected on that edge. +type ErrObjectType struct { + OID objectid.ObjectID + Got objecttype.Type + Want objecttype.Type +} + +func (e *ErrObjectType) Error() string { + gotName, gotOK := objecttype.Name(e.Got) + if !gotOK { + gotName = fmt.Sprintf("type(%d)", e.Got) + } + wantName, wantOK := objecttype.Name(e.Want) + if !wantOK { + wantName = fmt.Sprintf("type(%d)", e.Want) + } + return fmt.Sprintf("reachability: object %s has type %s, want %s", e.OID, gotName, wantName) +} |
