urbit/pkg/arvo/lib/metadata.hoon

77 lines
1.8 KiB
Plaintext
Raw Normal View History

:: metadata: helpers for getting data from the metadata-store
::
/- *metadata-store
2020-10-22 04:29:35 +03:00
/+ res=resource
::
|_ =bowl:gall
++ app-paths-from-group
|= [=app-name =group-path]
^- (list app-path)
%+ murn
%~ tap in
=- (~(gut by -) group-path ~)
.^ (jug ^group-path md-resource)
%gy
(scot %p our.bowl)
%metadata-store
(scot %da now.bowl)
/group-indices
==
|= =md-resource
^- (unit app-path)
?. =(app-name.md-resource app-name) ~
`app-path.md-resource
::
2020-10-22 04:29:35 +03:00
++ peek-metadata
|= [app-name=term =group=resource:res =app=resource:res]
^- (unit metadata)
=/ group-cord=cord (scot %t (spat (en-path:res group-resource)))
=/ app-cord=cord (scot %t (spat (en-path:res app-resource)))
=/ our=cord (scot %p our.bowl)
=/ now=cord (scot %da now.bowl)
.^ (unit metadata)
%gx (scot %p our.bowl) %metadata-store (scot %da now.bowl)
%metadata group-cord app-name app-cord /noun
==
::
++ group-from-app-resource
|= [app=term =app=resource:res]
^- (unit resource:res)
=/ app-path (en-path:res app-resource)
=/ group-paths (groups-from-resource app app-path)
?~ group-paths
~
`(de-path:res i.group-paths)
::
++ groups-from-resource
|= =md-resource
^- (list group-path)
=; resources
%~ tap in
%+ ~(gut by resources)
md-resource
*(set group-path)
.^ (jug ^md-resource group-path)
%gy
(scot %p our.bowl)
%metadata-store
(scot %da now.bowl)
/resource-indices
==
::
++ check-resource-permissions
|= [=ship =md-resource]
^- ?
%+ lien (groups-from-resource md-resource)
|= =group-path
.^ ?
%gx
(scot %p our.bowl)
%permission-store
(scot %da now.bowl)
%permitted
(scot %p ship)
(snoc group-path %noun)
==
--