aboutsummaryrefslogtreecommitdiff
path: root/commitquery/query_resolve_oid.go
diff options
context:
space:
mode:
Diffstat (limited to 'commitquery/query_resolve_oid.go')
-rw-r--r--commitquery/query_resolve_oid.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/commitquery/query_resolve_oid.go b/commitquery/query_resolve_oid.go
new file mode 100644
index 00000000..ad47829c
--- /dev/null
+++ b/commitquery/query_resolve_oid.go
@@ -0,0 +1,28 @@
+package commitquery
+
+import objectid "codeberg.org/lindenii/furgit/object/id"
+
+// resolveOID resolves one commit object ID to one internal query node.
+func (query *query) resolveOID(id objectid.ObjectID) (nodeIndex, error) {
+ idx, ok := query.byOID[id]
+ if ok {
+ err := query.ensureLoaded(idx)
+ if err != nil {
+ return 0, err
+ }
+
+ return idx, nil
+ }
+
+ idx = query.newNode(id)
+ query.byOID[id] = idx
+
+ err := query.loadByOID(idx)
+ if err != nil {
+ delete(query.byOID, id)
+
+ return 0, err
+ }
+
+ return idx, nil
+}