urbit/pkg/arvo/lib/metadata-store.hoon

223 lines
5.0 KiB
Plaintext
Raw Normal View History

2021-01-29 01:33:29 +03:00
/- sur=metadata-store
2021-01-12 07:26:19 +03:00
/+ resource
^?
2021-01-29 01:33:29 +03:00
=< [. sur]
=, sur
|%
2021-01-29 01:33:29 +03:00
++ enjs
=, enjs:format
2021-01-29 01:33:29 +03:00
|%
::
++ initial-group
|= [group=resource assocs=^associations]
%- pairs
:~ group+s+(enjs-path:resource group)
associations+(associations assocs)
==
::
2021-01-29 01:33:29 +03:00
++ associations
|= =^associations
=, enjs:format
^- json
%- pairs
%+ turn ~(tap by associations)
|= [=md-resource [group=resource =^metadatum]]
^- [cord json]
:-
%- crip
;: weld
(trip (spat (en-path:resource group)))
(weld "/" (trip app-name.md-resource))
(trip (spat (en-path:resource resource.md-resource)))
==
%- pairs
:~ [%group s+(enjs-path:resource group)]
[%app-name s+app-name.md-resource]
[%resource s+(enjs-path:resource resource.md-resource)]
[%metadata (^metadatum metadatum)]
==
::
++ metadatum
|= met=^metadatum
^- json
%- pairs
:~ [%title s+title.met]
[%description s+description.met]
[%color s+(scot %ux color.met)]
[%date-created s+(scot %da date-created.met)]
[%creator s+(scot %p creator.met)]
::
:- %config
?+ -.config.met o+~
%graph
%+ frond %graph
s+module.config.met
::
%group
%+ frond %group
?~ feed.config.met
~
?~ u.feed.config.met
o+~
%- pairs
:~ [%app-name s+app-name.u.u.feed.config.met]
[%resource s+(enjs-path:resource resource.u.u.feed.config.met)]
==
==
::
2021-01-29 01:33:29 +03:00
[%picture s+picture.met]
[%preview b+preview.met]
[%hidden b+hidden.met]
2021-01-29 01:33:29 +03:00
[%vip s+`@t`vip.met]
==
::
++ update
|= upd=^update
^- json
%+ frond %metadata-update
%- pairs
:~ ?- -.upd
2021-01-29 01:33:29 +03:00
%add
:- %add
%- pairs
:~ [%group s+(enjs-path:resource group.upd)]
[%app-name s+app-name.resource.upd]
[%resource s+(enjs-path:resource resource.resource.upd)]
[%metadata (metadatum metadatum.upd)]
==
%updated-metadata
:- %add
%- pairs
:~ [%group s+(enjs-path:resource group.upd)]
[%app-name s+app-name.resource.upd]
[%resource s+(enjs-path:resource resource.resource.upd)]
[%metadata (metadatum metadatum.upd)]
==
::
%remove
:- %remove
%- pairs
:~ [%group s+(enjs-path:resource group.upd)]
[%app-name s+app-name.resource.upd]
[%resource s+(enjs-path:resource resource.resource.upd)]
==
::
%associations
[%associations (associations associations.upd)]
::
%initial-group
[%initial-group (initial-group +.upd)]
2021-01-29 01:33:29 +03:00
::
== ==
::
++ hook-update
|= upd=^hook-update
%+ frond %metadata-hook-update
%+ frond -.upd
%- pairs
?- -.upd
%preview
:~ [%group s+(enjs-path:resource group.upd)]
[%channels (associations channels.upd)]
[%members (numb members.upd)]
[%channel-count (numb channel-count.upd)]
[%metadata (metadatum metadatum.upd)]
==
%req-preview
~[group+s+(enjs-path:resource group.upd)]
==
--
::
2021-01-29 01:33:29 +03:00
++ dejs
=, dejs:format
|%
2021-01-29 01:33:29 +03:00
++ action
%- of
:~ [%add add]
[%remove remove]
2021-01-29 01:33:29 +03:00
[%initial-group initial-group]
==
::
2021-01-29 01:33:29 +03:00
++ initial-group
|= json
[*resource *associations]
2021-01-29 01:33:29 +03:00
::
++ add
%- ot
2021-01-12 07:26:19 +03:00
:~ [%group dejs-path:resource]
[%resource md-resource]
2021-01-28 09:13:57 +03:00
[%metadata metadatum]
==
++ remove
%- ot
2021-01-12 07:26:19 +03:00
:~ [%group dejs-path:resource]
[%resource md-resource]
==
::
++ nu
|= jon=json
?> ?=([%s *] jon)
(rash p.jon hex)
::
2021-01-26 04:46:06 +03:00
++ vip
2021-01-20 04:51:07 +03:00
%- su
2021-02-10 11:54:46 +03:00
%- perk
:~ %reader-comments
%member-metadata
2021-04-02 04:48:09 +03:00
%admin-feed
%host-feed
2021-02-10 11:54:46 +03:00
%$
2021-01-20 04:51:07 +03:00
==
::
2021-01-28 09:13:57 +03:00
++ metadatum
2021-01-29 01:33:29 +03:00
^- $-(json ^metadatum)
%- ot
:~ [%title so]
[%description so]
[%color nu]
[%date-created (se %da)]
[%creator (su ;~(pfix sig fed:ag))]
[%config config]
2021-01-14 04:12:48 +03:00
[%picture so]
[%preview bo]
[%hidden bo]
2021-01-26 04:46:06 +03:00
[%vip vip]
==
2021-01-12 07:26:19 +03:00
::
++ config
|= jon=^json
^- md-config
?~ jon
[%group ~]
?> ?=(%o -.jon)
2021-04-02 16:23:31 +03:00
?: (~(has by p.jon) %graph)
=/ mod
(~(got by p.jon) %graph)
?> ?=(%s -.mod)
[%graph p.mod]
2021-04-02 08:24:26 +03:00
=/ jin=json
2021-04-02 07:35:41 +03:00
(~(got by p.jon) %group)
:+ %group ~
?~ jin
~
?> ?=(%o -.jin)
2021-04-02 23:35:25 +03:00
?. ?& (~(has by p.jin) 'app-name')
2021-04-02 07:35:41 +03:00
(~(has by p.jin) 'resource')
==
2021-04-02 23:35:25 +03:00
~
2021-04-02 07:35:41 +03:00
=/ app-name=^json (~(got by p.jin) 'app-name')
?> ?=(%s -.app-name)
:+ ~
p.app-name
2021-04-02 07:35:41 +03:00
=/ res=^json (~(got by p.jin) 'resource')
(dejs-path:resource res)
::
++ md-resource
2021-01-12 07:26:19 +03:00
^- $-(json ^md-resource)
%- ot
:~ [%app-name so]
2021-01-12 07:26:19 +03:00
[%resource dejs-path:resource]
==
--
--