36 lines
854 B
Erlang
36 lines
854 B
Erlang
-module(geef_ref).
|
|
|
|
-export([lookup/2, resolve/1, target/1]).
|
|
|
|
-include("geef_records.hrl").
|
|
|
|
-spec new(term()) -> ref().
|
|
new(Handle) ->
|
|
Type = geef:reference_type(Handle),
|
|
#ref{handle=Handle, type=Type}.
|
|
|
|
-spec lookup(repo(), iolist()) -> {ok, ref()} | {error, term()}.
|
|
lookup(#repo{handle=Handle}, Refname) ->
|
|
case geef:reference_lookup(Handle, Refname) of
|
|
{ok, Ref} ->
|
|
{ok, new(Ref)};
|
|
Other ->
|
|
Other
|
|
end.
|
|
|
|
-spec resolve(ref()) -> {ok, ref()} | {error, term()}.
|
|
resolve(#ref{handle=Handle}) ->
|
|
case geef:reference_resolve(Handle) of
|
|
{ok, Ref} ->
|
|
{ok, new(Ref)};
|
|
Other ->
|
|
Other
|
|
end.
|
|
|
|
-spec target(ref()) -> binary() | oid().
|
|
target(#ref{handle=Handle,type=symbolic}) ->
|
|
geef:reference_target(Handle);
|
|
target(#ref{handle=Handle,type=oid}) ->
|
|
Oid = geef:reference_target(Handle),
|
|
#oid{oid=Oid}.
|