mirror of
https://github.com/urbit/shrub.git
synced 2025-01-01 17:16:47 +03:00
graph-store+view: added a variety of query types for subset fetching, individual post fetching, child fetching, etc
This commit is contained in:
parent
abcd6ab7dd
commit
e055ba98ae
@ -28,6 +28,26 @@
|
||||
^- (quip card _this)
|
||||
[~ this(state !<(state-0 old))]
|
||||
::
|
||||
++ on-watch
|
||||
~/ %graph-store-watch
|
||||
|= =path
|
||||
^- (quip card _this)
|
||||
|^
|
||||
?> (team:title our.bowl src.bowl)
|
||||
=/ cards=(list card)
|
||||
?+ path (on-watch:def path)
|
||||
[%updates ~] ~
|
||||
[%keys ~] (give [%keys ~(key by graphs)])
|
||||
[%tags ~] (give [%tags ~(key by tag-queries)])
|
||||
==
|
||||
[cards this]
|
||||
::
|
||||
++ give
|
||||
|= update=update-0:store
|
||||
^- (list card)
|
||||
[%give %fact ~ [%graph-update !>([%0 update])]]~
|
||||
--
|
||||
::
|
||||
++ on-poke
|
||||
~/ %graph-store-poke
|
||||
|= [=mark =vase]
|
||||
@ -36,26 +56,32 @@
|
||||
?> (team:title our.bowl src.bowl)
|
||||
=^ cards state
|
||||
?+ mark (on-poke:def mark vase)
|
||||
%graph-action (graph-action !<(action:store vase))
|
||||
%graph-update (graph-update !<(update:store vase))
|
||||
==
|
||||
[cards this]
|
||||
::
|
||||
++ graph-action
|
||||
|= =action:store
|
||||
++ graph-update
|
||||
|= =update:store
|
||||
^- (quip card _state)
|
||||
|^
|
||||
?> ?=(%0 -.action)
|
||||
?- +<.action
|
||||
%add-graph (add-graph +>.action)
|
||||
%remove-graph (remove-graph +>.action)
|
||||
%add-nodes (add-nodes +>.action)
|
||||
%remove-nodes (remove-nodes +>.action)
|
||||
%add-signatures (add-signatures +>.action)
|
||||
%remove-signatures (remove-signatures +>.action)
|
||||
%add-tag (add-tag +>.action)
|
||||
%remove-tag (remove-tag +>.action)
|
||||
%archive-graph (archive-graph +>.action)
|
||||
%unarchive-graph (unarchive-graph +>.action)
|
||||
?> ?=(%0 -.update)
|
||||
?- +<.update
|
||||
%add-graph (add-graph +>.update)
|
||||
%remove-graph (remove-graph +>.update)
|
||||
%add-nodes (add-nodes +>.update)
|
||||
%remove-nodes (remove-nodes +>.update)
|
||||
%add-signatures (add-signatures +>.update)
|
||||
%remove-signatures (remove-signatures +>.update)
|
||||
%add-tag (add-tag +>.update)
|
||||
%remove-tag (remove-tag +>.update)
|
||||
%archive-graph (archive-graph +>.update)
|
||||
%unarchive-graph (unarchive-graph +>.update)
|
||||
::
|
||||
:: NOTE: cannot send these updates as pokes
|
||||
::
|
||||
%keys !!
|
||||
%tags !!
|
||||
%tag-queries !!
|
||||
==
|
||||
::
|
||||
++ add-graph
|
||||
@ -281,7 +307,7 @@
|
||||
|= [=term =resource:store]
|
||||
^- (quip card _state)
|
||||
?> (~(has by graphs) resource)
|
||||
:- (give [/updates]~ [%add-tag term resource])
|
||||
:- (give [/updates /tags ~] [%add-tag term resource])
|
||||
%_ state
|
||||
tag-queries (~(put ju tag-queries) term resource)
|
||||
==
|
||||
@ -290,7 +316,7 @@
|
||||
|= [=term =resource:store]
|
||||
^- (quip card _state)
|
||||
?> (~(has by graphs) resource)
|
||||
:- (give [/updates]~ [%remove-tag term resource])
|
||||
:- (give [/updates /tags ~] [%remove-tag term resource])
|
||||
%_ state
|
||||
tag-queries (~(del ju tag-queries) term resource)
|
||||
==
|
||||
@ -300,11 +326,15 @@
|
||||
^- (quip card _state)
|
||||
?< (~(has by archive) resource)
|
||||
?> (~(has by graphs) resource)
|
||||
:- (give [/updates /keys ~] [%archive-graph resource])
|
||||
:- (give [/updates /keys /tags ~] [%archive-graph resource])
|
||||
%_ state
|
||||
archive (~(put by archive) resource (~(got by graphs) resource))
|
||||
graphs (~(del by graphs) resource)
|
||||
action-logs (~(del by action-logs) resource)
|
||||
tag-queries
|
||||
%- ~(run by tag-queries)
|
||||
|= =resources:store
|
||||
(~(del in resources) resource)
|
||||
==
|
||||
::
|
||||
++ unarchive-graph
|
||||
@ -326,32 +356,16 @@
|
||||
--
|
||||
--
|
||||
::
|
||||
++ on-watch
|
||||
~/ %graph-store-watch
|
||||
|= =path
|
||||
^- (quip card _this)
|
||||
|^
|
||||
?> (team:title our.bowl src.bowl)
|
||||
=/ cards=(list card)
|
||||
?+ path (on-watch:def path)
|
||||
[%updates ~] ~
|
||||
[%keys ~] (give [%keys ~(key by graphs)])
|
||||
==
|
||||
[cards this]
|
||||
::
|
||||
++ give
|
||||
|= update=update-0:store
|
||||
^- (list card)
|
||||
[%give %fact ~ [%graph-update !>([%0 update])]]~
|
||||
--
|
||||
::
|
||||
++ on-peek
|
||||
~/ %graph-store-peek
|
||||
|= =path
|
||||
^- (unit (unit cage))
|
||||
|^
|
||||
?> (team:title our.bowl src.bowl)
|
||||
?+ path (on-peek:def path)
|
||||
[%x %keys ~] ``noun+!>(~(key by graphs))
|
||||
[%x %tags ~] ``noun+!>(~(key by tag-queries))
|
||||
[%x %keys ~] ``noun+!>(~(key by graphs))
|
||||
[%x %tags ~] ``noun+!>(~(key by tag-queries))
|
||||
[%x %tag-queries ~] ``noun+!>(tag-queries)
|
||||
[%x %graph @ @ ~]
|
||||
=/ =ship (slav %p i.t.t.path)
|
||||
=/ =term i.t.t.t.path
|
||||
@ -359,39 +373,75 @@
|
||||
?~ graph ~
|
||||
``noun+!>(u.graph)
|
||||
::
|
||||
:: [%x %graph-subset @ @ @ @ ~]
|
||||
:: =/ =ship (slav %p i.t.t.path)
|
||||
:: =/ =term i.t.t.t.path
|
||||
:: :: TODO: parse out either '~' literal into null or parse out @ud
|
||||
:: =/ start=(unit @ud)
|
||||
:: =/ graph=(unit graph:store) (~(get by graphs) [ship term])
|
||||
:: ?~ graph ~
|
||||
:: ``noun+!>((subset:orm u.graph [~
|
||||
:: ``noun+!>(u.graph)
|
||||
[%x %graph-subset @ @ @ @ ~]
|
||||
=/ =ship (slav %p i.t.t.path)
|
||||
=/ =term i.t.t.t.path
|
||||
=/ start=(unit atom:store) (rush i.t.t.t.t.path dem:ag)
|
||||
=/ end=(unit atom:store) (rush i.t.t.t.t.t.path dem:ag)
|
||||
=/ graph=(unit graph:store) (~(get by graphs) [ship term])
|
||||
?~ graph ~
|
||||
``noun+!>(`graph:store`(subset:orm u.graph start end))
|
||||
::
|
||||
[%x %node @ @ @ *]
|
||||
=/ =ship (slav %p i.t.t.path)
|
||||
=/ =term i.t.t.t.path
|
||||
=/ =index:store (turn t.t.t.t.path |=(=cord (slav %ud cord)))
|
||||
=/ node=(unit node:store) (get-node ship term index)
|
||||
?~ node ~
|
||||
``noun+!>(u.node)
|
||||
::
|
||||
[%x %post @ @ @ *]
|
||||
=/ =ship (slav %p i.t.t.path)
|
||||
=/ =term i.t.t.t.path
|
||||
=/ =index:store (turn t.t.t.t.path |=(=cord (slav %ud cord)))
|
||||
=/ node=(unit node:store) (get-node ship term index)
|
||||
?~ node ~
|
||||
``noun+!>(post.u.node)
|
||||
::
|
||||
[%x %node-children @ @ @ *]
|
||||
=/ =ship (slav %p i.t.t.path)
|
||||
=/ =term i.t.t.t.path
|
||||
=/ =index:store (turn t.t.t.t.path |=(=cord (slav %ud cord)))
|
||||
=/ node=(unit node:store) (get-node ship term index)
|
||||
?~ node ~
|
||||
?- -.children.u.node
|
||||
%empty ~
|
||||
%graph ``noun+!>(p.children.u.node)
|
||||
==
|
||||
::
|
||||
[%x %node-children-subset @ @ @ @ @ *]
|
||||
=/ =ship (slav %p i.t.t.path)
|
||||
=/ =term i.t.t.t.path
|
||||
=/ start=(unit atom:store) (rush i.t.t.t.t.path dem:ag)
|
||||
=/ end=(unit atom:store) (rush i.t.t.t.t.t.path dem:ag)
|
||||
=/ =index:store (turn t.t.t.t.t.t.path |=(=cord (slav %ud cord)))
|
||||
=/ node=(unit node:store) (get-node ship term index)
|
||||
?~ node ~
|
||||
?- -.children.u.node
|
||||
%empty ~
|
||||
%graph ``noun+!>(`graph:store`(subset:orm p.children.u.node start end))
|
||||
==
|
||||
==
|
||||
::
|
||||
++ get-node
|
||||
|= [=ship =term =index:store]
|
||||
^- (unit node:store)
|
||||
=/ parent-graph=(unit graph:store) (~(get by graphs) [ship term])
|
||||
?~ parent-graph ~
|
||||
=/ node=(unit node:store) ~
|
||||
=/ =graph:store u.parent-graph
|
||||
|-
|
||||
?~ index
|
||||
?~ node ~
|
||||
``noun+!>(u.node)
|
||||
node
|
||||
?~ t.index
|
||||
=. node (get:orm graph i.index)
|
||||
?~ node ~
|
||||
``noun+!>(u.node)
|
||||
(get:orm graph i.index)
|
||||
=. node (get:orm graph i.index)
|
||||
?~ node ~
|
||||
?- -.children.u.node
|
||||
%empty ~
|
||||
%graph $(graph p.children.u.node, index t.index)
|
||||
==
|
||||
==
|
||||
--
|
||||
::
|
||||
++ on-arvo on-arvo:def
|
||||
++ on-agent on-agent:def
|
||||
|
@ -37,6 +37,45 @@
|
||||
==
|
||||
==
|
||||
::
|
||||
++ on-watch
|
||||
~/ %graph-view-watch
|
||||
|= =path
|
||||
^- (quip card _this)
|
||||
?> (team:title our.bowl src.bowl)
|
||||
?+ path (on-watch:def path)
|
||||
[%updates @ ~]
|
||||
:- [%give %fact ~ %json !>([(frond:enjs:format %graph-view s+'bound')])]~
|
||||
this(connections (~(put by connections) (slav %ud i.t.path) now.bowl))
|
||||
==
|
||||
::
|
||||
++ on-agent
|
||||
|= [=wire =sign:agent:gall]
|
||||
^- (quip card _this)
|
||||
|^
|
||||
?+ -.sign (on-agent:def wire sign)
|
||||
%kick
|
||||
:_ this
|
||||
[%pass /updates %agent [our.bowl %graph-store] %watch /updates]~
|
||||
::
|
||||
%fact
|
||||
?+ p.cage.sign (on-agent:def wire sign)
|
||||
%graph-update
|
||||
:_ this
|
||||
%+ give
|
||||
%+ turn ~(tap by connections)
|
||||
|= [=atom:store *]
|
||||
^- path
|
||||
/updates/(scot %ud atom)
|
||||
cage.sign
|
||||
==
|
||||
==
|
||||
::
|
||||
++ give
|
||||
|= [paths=(list path) =cage]
|
||||
^- (list card)
|
||||
[%give %fact paths cage]~
|
||||
--
|
||||
::
|
||||
++ on-poke
|
||||
~/ %graph-view-poke
|
||||
|= [=mark =vase]
|
||||
@ -45,23 +84,23 @@
|
||||
?> (team:title our.bowl src.bowl)
|
||||
=^ cards state
|
||||
?+ mark (on-poke:def mark vase)
|
||||
%graph-action (action !<(action:store vase))
|
||||
%json (action (action:dejs:store !<(json vase)))
|
||||
%graph-update (update !<(update:store vase))
|
||||
%json (update (update:dejs:store !<(json vase)))
|
||||
%graph-view-action (view-action !<(action:view vase))
|
||||
==
|
||||
[cards this]
|
||||
::
|
||||
++ action
|
||||
|= =action:store
|
||||
++ update
|
||||
|= =update:store
|
||||
^- (quip card _state)
|
||||
|^
|
||||
:: TODO: decide who to send it to based on resource
|
||||
::
|
||||
?> ?=(%0 -.action)
|
||||
?> ?=(%0 -.update)
|
||||
:_ state
|
||||
?+ +<.action [(poke-store action) ~]
|
||||
%add-nodes (add-nodes +>.action)
|
||||
%add-signatures (add-signatures +>.action)
|
||||
?+ +<.update [(poke-store update) ~]
|
||||
%add-nodes (add-nodes +>.update)
|
||||
%add-signatures (add-signatures +>.update)
|
||||
==
|
||||
::
|
||||
++ add-nodes
|
||||
@ -147,14 +186,14 @@
|
||||
(scot %ud i)
|
||||
::
|
||||
++ poke-store
|
||||
|= =action:store
|
||||
|= =update:store
|
||||
^- card
|
||||
:* %pass
|
||||
/(scot %da now.bowl)
|
||||
%agent
|
||||
[our.bowl %graph-store]
|
||||
%poke
|
||||
[%graph-action !>(action)]
|
||||
[%graph-update !>(update)]
|
||||
==
|
||||
--
|
||||
::
|
||||
@ -165,6 +204,149 @@
|
||||
%fetch (fetch +.action)
|
||||
==
|
||||
::
|
||||
++ fetch
|
||||
|= [con=atom:store typ=query-type:view]
|
||||
^- (quip card _state)
|
||||
?- -.typ
|
||||
%all
|
||||
=/ keys (scry-for resources:store /keys)
|
||||
:_ state
|
||||
:- (give con [%graph-view-update !>([%0 [%keys keys]])])
|
||||
%+ turn ~(tap in keys)
|
||||
|= [=ship =term]
|
||||
(give con [%graph-update !>((add-graph ship term))])
|
||||
::
|
||||
%keys
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
:- %graph-view-update
|
||||
!>([%0 [%keys (scry-for resources:store /keys)]])
|
||||
::
|
||||
%tags
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
:- %graph-view-update
|
||||
!>([%0 [%tags (scry-for (set term) /tags)]])
|
||||
::
|
||||
%tag-queries
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
:- %graph-view-update
|
||||
!>([%0 [%tag-queries (scry-for tag-queries:store /tag-queries)]])
|
||||
::
|
||||
%graph
|
||||
:_ state
|
||||
:_ ~
|
||||
(give con [%graph-update !>((add-graph resource.typ))])
|
||||
::
|
||||
%graph-subset
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
:- %graph-view-update
|
||||
!>((graph-subset resource.typ start.typ end.typ))
|
||||
::
|
||||
%node
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
[%graph-view-update !>((node resource.typ index.typ))]
|
||||
::
|
||||
%post
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
[%graph-view-update !>((post resource.typ index.typ))]
|
||||
::
|
||||
%node-children
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
[%graph-view-update !>((node-children resource.typ index.typ))]
|
||||
::
|
||||
%node-children-subset
|
||||
:_ state
|
||||
:_ ~
|
||||
%+ give con
|
||||
:- %graph-view-update
|
||||
!>((node-children-subset resource.typ start.typ end.typ index.typ))
|
||||
==
|
||||
::
|
||||
++ add-graph
|
||||
|= [=ship =term]
|
||||
^- update:store
|
||||
:- %0
|
||||
:+ %add-graph
|
||||
[ship term]
|
||||
(scry-for graph:store /graph/(scot %p ship)/[term])
|
||||
::
|
||||
++ graph-subset
|
||||
|= [res=resource:store start=(unit atom:store) end=(unit atom:store)]
|
||||
^- update:view
|
||||
=/ st ?~(start %'~' (scot %ud u.start))
|
||||
=/ en ?~(end %'~' (scot %ud u.end))
|
||||
:- %0
|
||||
:* %graph-subset
|
||||
res
|
||||
start
|
||||
end
|
||||
%+ scry-for graph:store
|
||||
/graph-subset/(scot %p entity.res)/[name.res]/[st]/[en]
|
||||
==
|
||||
::
|
||||
++ node
|
||||
|= [res=resource:store =index:store]
|
||||
^- update:view
|
||||
:- %0
|
||||
:* %node
|
||||
res
|
||||
index
|
||||
%+ scry-for node:store
|
||||
%+ weld /node/(scot %p entity.res)/[name.res]
|
||||
(turn index |=(=atom:store (scot %ud atom)))
|
||||
==
|
||||
::
|
||||
++ post
|
||||
|= [res=resource:store =index:store]
|
||||
^- update:view
|
||||
:- %0
|
||||
:* %post
|
||||
res
|
||||
index
|
||||
%+ scry-for post:store
|
||||
%+ weld /post/(scot %p entity.res)/[name.res]
|
||||
(turn index |=(=atom:store (scot %ud atom)))
|
||||
==
|
||||
::
|
||||
++ node-children
|
||||
|= [res=resource:store =index:store]
|
||||
^- update:view
|
||||
:- %0
|
||||
:* %node-children
|
||||
res
|
||||
index
|
||||
%+ scry-for graph:store
|
||||
%+ weld /node-children/(scot %p entity.res)/[name.res]
|
||||
(turn index |=(=atom:store (scot %ud atom)))
|
||||
==
|
||||
::
|
||||
++ node-children-subset
|
||||
|= [res=resource:store start=(unit atom) end=(unit atom) =index:store]
|
||||
^- update:view
|
||||
:- %0
|
||||
:* %node-children-subset
|
||||
res
|
||||
start
|
||||
end
|
||||
index
|
||||
%+ scry-for graph:store
|
||||
%+ weld /node-children-subset/(scot %p entity.res)/[name.res]
|
||||
(turn index |=(=atom:store (scot %ud atom)))
|
||||
==
|
||||
::
|
||||
++ scry-for
|
||||
|* [=mold =path]
|
||||
.^ mold
|
||||
@ -175,69 +357,12 @@
|
||||
(snoc `^path`path %noun)
|
||||
==
|
||||
::
|
||||
++ fetch
|
||||
|= [conn=atom:store type=fetch-type:view]
|
||||
^- (quip card _state)
|
||||
=/ keys (scry-for resources:store /keys)
|
||||
:_ state
|
||||
:- (give conn [%graph-update !>([%0 [%keys keys]])])
|
||||
%+ turn ~(tap in keys)
|
||||
|= [=ship =term]
|
||||
(give conn [%graph-update !>((add-graph ship term))])
|
||||
::
|
||||
++ add-graph
|
||||
|= [=ship =term]
|
||||
^- update:store
|
||||
:- %0
|
||||
:+ %add-graph
|
||||
[ship term]
|
||||
(scry-for graph:store /graph/(scot %p ship)/[term])
|
||||
::
|
||||
++ give
|
||||
|= [conn=atom:store =cage]
|
||||
^- card
|
||||
[%give %fact [/updates/(scot %ud conn)]~ cage]
|
||||
--
|
||||
::
|
||||
++ on-watch
|
||||
~/ %graph-view-watch
|
||||
|= =path
|
||||
^- (quip card _this)
|
||||
?> (team:title our.bowl src.bowl)
|
||||
?+ path (on-watch:def path)
|
||||
[%updates @ ~]
|
||||
:- [%give %fact ~ %json !>([(frond:enjs:format %graph-view s+'bound')])]~
|
||||
this(connections (~(put by connections) (slav %ud i.t.path) now.bowl))
|
||||
==
|
||||
::
|
||||
++ on-agent
|
||||
|= [=wire =sign:agent:gall]
|
||||
^- (quip card _this)
|
||||
|^
|
||||
?+ -.sign (on-agent:def wire sign)
|
||||
%kick
|
||||
:_ this
|
||||
[%pass /updates %agent [our.bowl %graph-store] %watch /updates]~
|
||||
::
|
||||
%fact
|
||||
?+ p.cage.sign (on-agent:def wire sign)
|
||||
%graph-update
|
||||
:_ this
|
||||
%+ give
|
||||
%+ turn ~(tap by connections)
|
||||
|= [=atom:store *]
|
||||
^- path
|
||||
/updates/(scot %ud atom)
|
||||
cage.sign
|
||||
==
|
||||
==
|
||||
::
|
||||
++ give
|
||||
|= [paths=(list path) =cage]
|
||||
^- (list card)
|
||||
[%give %fact paths cage]~
|
||||
--
|
||||
::
|
||||
++ on-save !>(state)
|
||||
++ on-load on-load:def
|
||||
++ on-arvo on-arvo:def
|
||||
|
@ -29,7 +29,7 @@
|
||||
==
|
||||
::
|
||||
++ orm ((or-map atom node) gth)
|
||||
++ orm-log ((or-map time action) lth)
|
||||
++ orm-log ((or-map time update) lth)
|
||||
::
|
||||
++ enjs
|
||||
=, enjs:format
|
||||
@ -44,9 +44,6 @@
|
||||
|= upd=update-0
|
||||
^- [cord json]
|
||||
?- -.upd
|
||||
%keys
|
||||
[%keys [%a (turn ~(tap in resources.upd) enjs:res)]]
|
||||
::
|
||||
%add-graph
|
||||
:- %add-graph
|
||||
%- pairs
|
||||
@ -104,6 +101,20 @@
|
||||
::
|
||||
%unarchive-graph
|
||||
[%unarchive-graph (enjs:res resource.upd)]
|
||||
::
|
||||
%keys
|
||||
[%keys [%a (turn ~(tap in resources.upd) enjs:res)]]
|
||||
::
|
||||
%tags
|
||||
[%tags [%a (turn ~(tap in tags.upd) |=(=term s+term))]]
|
||||
::
|
||||
%tag-queries
|
||||
:- %tag-queries
|
||||
%- pairs
|
||||
%+ turn ~(tap by tag-queries.upd)
|
||||
|= [=term =resources]
|
||||
^- [cord json]
|
||||
[term [%a (turn ~(tap in resources) enjs:res)]]
|
||||
==
|
||||
::
|
||||
++ graph
|
||||
@ -222,11 +233,11 @@
|
||||
++ dejs
|
||||
=, dejs:format
|
||||
|%
|
||||
++ action
|
||||
++ update
|
||||
|= jon=json
|
||||
^- ^action
|
||||
^- ^update
|
||||
:- %0
|
||||
^- action-0
|
||||
^- update-0
|
||||
=< (decode jon)
|
||||
|%
|
||||
++ decode
|
||||
@ -241,6 +252,9 @@
|
||||
[%remove-tag remove-tag]
|
||||
[%archive-graph archive-graph]
|
||||
[%unarchive-graph unarchive-graph]
|
||||
[%keys keys]
|
||||
[%tags tags]
|
||||
[%tag-queries tag-queries]
|
||||
==
|
||||
::
|
||||
++ add-graph
|
||||
@ -354,6 +368,18 @@
|
||||
:~ [%term so]
|
||||
[%resource dejs:res]
|
||||
==
|
||||
::
|
||||
++ keys
|
||||
|= =json
|
||||
*resources
|
||||
::
|
||||
++ tags
|
||||
|= =json
|
||||
*(set term)
|
||||
::
|
||||
++ tag-queries
|
||||
|= =json
|
||||
*^tag-queries
|
||||
--
|
||||
--
|
||||
::
|
||||
|
@ -1,4 +1,5 @@
|
||||
/- sur=graph-view
|
||||
/+ res=resource
|
||||
^?
|
||||
=< [sur .]
|
||||
=, sur
|
||||
@ -9,9 +10,9 @@
|
||||
++ action
|
||||
|= jon=json
|
||||
^- ^action
|
||||
=< (parse-json jon)
|
||||
=< (decode jon)
|
||||
|%
|
||||
++ parse-json
|
||||
++ decode
|
||||
%- of
|
||||
:~ [%fetch fetch]
|
||||
==
|
||||
@ -19,14 +20,44 @@
|
||||
++ fetch
|
||||
%- ot
|
||||
:~ [%connection ni]
|
||||
[%type fetch-type]
|
||||
[%type query-type]
|
||||
==
|
||||
::
|
||||
++ fetch-type
|
||||
++ query-type
|
||||
%- of
|
||||
:~ [%all ul]
|
||||
[%keys ul]
|
||||
[%tags ul]
|
||||
[%tag-queries ul]
|
||||
[%graph dejs:res]
|
||||
[%graph-subset graph-subset]
|
||||
[%node node]
|
||||
[%post node]
|
||||
[%node-children node]
|
||||
[%node-children-subset node-children-subset]
|
||||
==
|
||||
::
|
||||
++ index (su ;~(pfix net (more net dem)))
|
||||
++ graph-subset
|
||||
%- ot
|
||||
:~ [%resource dejs:res]
|
||||
[%start (mu ni)]
|
||||
[%end (mu ni)]
|
||||
==
|
||||
::
|
||||
++ node
|
||||
%- ot
|
||||
:~ [%resource dejs:res]
|
||||
[%index index]
|
||||
==
|
||||
::
|
||||
++ node-children-subset
|
||||
%- ot
|
||||
:~ [%resource dejs:res]
|
||||
[%start (mu ni)]
|
||||
[%end (mu ni)]
|
||||
[%index index]
|
||||
==
|
||||
--
|
||||
--
|
||||
|
||||
--
|
||||
|
@ -1,8 +0,0 @@
|
||||
/+ *graph-store
|
||||
|_ act=action
|
||||
++ grab
|
||||
|%
|
||||
++ noun action
|
||||
++ json action:dejs
|
||||
--
|
||||
--
|
@ -8,6 +8,6 @@
|
||||
++ grab
|
||||
|%
|
||||
++ noun update
|
||||
++ json update:dejs
|
||||
--
|
||||
::
|
||||
--
|
||||
|
12
pkg/arvo/mar/graph/view-update.hoon
Normal file
12
pkg/arvo/mar/graph/view-update.hoon
Normal file
@ -0,0 +1,12 @@
|
||||
/+ *graph-view
|
||||
|_ upd=update
|
||||
++ grow
|
||||
|%
|
||||
++ json (update:enjs upd)
|
||||
--
|
||||
::
|
||||
++ grab
|
||||
|%
|
||||
++ noun update
|
||||
--
|
||||
--
|
@ -8,19 +8,12 @@
|
||||
?> (check-balance:((ordered-map key value) ord) b)
|
||||
b
|
||||
::
|
||||
+$ graph ((mop atom node) gth)
|
||||
+$ node [=post children=internal-graph]
|
||||
+$ graphs (map resource graph)
|
||||
+$ tag-queries (jug term resource)
|
||||
+$ action-log ((mop time update) lth)
|
||||
+$ action-logs (map resource action-log)
|
||||
+$ network
|
||||
$: =graphs
|
||||
=tag-queries
|
||||
=action-logs
|
||||
archive=graphs
|
||||
==
|
||||
::
|
||||
+$ action-log ((mop time action) lth)
|
||||
::
|
||||
+$ graph ((mop atom node) gth)
|
||||
::
|
||||
+$ internal-graph
|
||||
$~ [%empty ~]
|
||||
@ -28,13 +21,18 @@
|
||||
[%empty ~]
|
||||
==
|
||||
::
|
||||
+$ node [=post children=internal-graph]
|
||||
::
|
||||
+$ action
|
||||
$% [%0 action-0]
|
||||
+$ network
|
||||
$: =graphs
|
||||
=tag-queries
|
||||
=action-logs
|
||||
archive=graphs
|
||||
==
|
||||
::
|
||||
+$ action-0
|
||||
+$ update
|
||||
$% [%0 update-0]
|
||||
==
|
||||
::
|
||||
+$ update-0
|
||||
$% [%add-graph =resource =graph]
|
||||
[%remove-graph =resource]
|
||||
::
|
||||
@ -49,14 +47,11 @@
|
||||
::
|
||||
[%archive-graph =resource]
|
||||
[%unarchive-graph =resource]
|
||||
==
|
||||
::
|
||||
+$ update
|
||||
$% [%0 update-0]
|
||||
==
|
||||
::
|
||||
+$ update-0
|
||||
$% [%keys =resources]
|
||||
action-0
|
||||
::
|
||||
:: NOTE: cannot be sent as pokes
|
||||
::
|
||||
[%keys =resources]
|
||||
[%tags tags=(set term)]
|
||||
[%tag-queries =tag-queries]
|
||||
==
|
||||
--
|
||||
|
@ -1,9 +1,37 @@
|
||||
/- *graph-store, *post
|
||||
|%
|
||||
+$ fetch-type
|
||||
+$ query-type
|
||||
$% [%all ~]
|
||||
[%keys ~]
|
||||
[%tags ~]
|
||||
[%tag-queries ~]
|
||||
[%graph =resource]
|
||||
[%graph-subset =resource start=(unit atom) end=(unit atom)]
|
||||
[%node =resource =index]
|
||||
[%post =resource =index]
|
||||
[%node-children =resource =index]
|
||||
[%node-children-subset =resource start=(unit atom) end=(unit atom) =index]
|
||||
==
|
||||
::
|
||||
+$ action
|
||||
$% [%fetch connection=@ type=fetch-type]
|
||||
$% [%fetch connection=@ type=query-type]
|
||||
==
|
||||
::
|
||||
+$ update
|
||||
$% [%0 update-0]
|
||||
==
|
||||
::
|
||||
+$ update-0
|
||||
$% [%graph-subset =resource start=(unit atom) end=(unit atom) =graph]
|
||||
[%node =resource =index =node]
|
||||
[%post =resource =index =post]
|
||||
[%node-children =resource =index =graph]
|
||||
$: %node-children-subset
|
||||
=resource
|
||||
start=(unit atom)
|
||||
end=(unit atom)
|
||||
=index
|
||||
=graph
|
||||
==
|
||||
==
|
||||
--
|
||||
|
Loading…
Reference in New Issue
Block a user