graph-view: add delete, leave threads

This commit is contained in:
Liam Fitzgerald 2020-09-03 15:07:18 +10:00
parent b1093f0749
commit 9aeabe515a
4 changed files with 142 additions and 9 deletions

View File

@ -2,12 +2,23 @@
/+ resource
^?
|%
++ error
$%
[%offline =ship]
[%no-permissions ~]
==
++ action
:: $error: An error from a graph-view poke
::
:: %offline: Ship is offline
:: %bad-perms: Not permitted
:: %unknown: Anything not described above
::
+$ error
?(%offline %bad-perms %unknown)
:: $action: A semantic action on graphs
::
:: %create: Create a graph and associated metadata
:: %delete: Delete a graph
:: %join: Join a graph
:: %invite: Invite users to a graph
:: %groupify: Make graph into managed group
::
+$ action
$%
$: %create
rid=resource

View File

@ -0,0 +1,61 @@
/- spider, graph-view, graph=graph-store, *metadata-store, *group
/+ strandio, resource
=>
|%
++ strand strand:spider
++ poke poke:strandio
++ poke-our poke-our:strandio
++ scry-metadata
|= rid=resource
=/ m (strand ,(unit resource))
;< pax=(unit path) bind:m
%+ scry:strandio ,(unit path)
;: weld
/gx/metadata-store/resource/graph
(en-path:resource rid)
/noun
==
(pure:m (bind pax de-path:resource))
++ scry-group
|= rid=resource
=/ m (strand ,(unit resource))
;< ugroup=(unit group) bind:m
%+ scry:strandio ,(unit group)
;: weld
/gx/group-store/resource/graph
(en-path:resource rid)
/noun
==
(pure:m (need ugroup))
++ delete-graph
|= rid=resource
=/ m (strand ,~)
;< ~ bind:m
(poke-our %graph-push-hook %push-hook-action [%remove rid.action])
;< ~ bind:m
(poke-our %graph-store %graph-update [%archive-graph rid.action])
(pure:m ~)
--
^- thread:spider
|= arg=vase
=/ m (strand ,vase)
^- form:m
=+ !<([=action:graph-view ~] arg)
?> ?=(%delete -.action)
;< =bowl:spider bind:m get-bowl:strandio
?> =(our.bowl entity.rid.action)
;< ugroup-rid=(unit resource) bind:m
(scry-metadata rid.action)
?~ ugroup-rid (fail:m %nonexistent)
;< ugroup=(unit group)
(scry-group u.ugroup-rid)
?~ ugroup (fail:m %nonexistent)
?. hidden.u.ugroup
(delete-graph rid.action)
;< ~ bind:m
(poke-our %group-push-hook %pull-hook-action [%remove rid.action])
;< ~ bind:m
(poke-our %group-store %group-action !>([%remove-group rid.action])
;< ~ bind:m (delete-graph rid.action)
(pure:m !>(~))

View File

@ -29,9 +29,9 @@
(scry-metadata rid.action)
?^ group
:: We have group, graph is managed
:: ;< ~ bind:m
:: %+ poke-our %graph-pull-hook
:: pull-hook-action+!>([%add ship.action rid.action])
;< ~ bind:m
%+ poke-our %graph-pull-hook
pull-hook-action+!>([%add ship.action rid.action])
(pure:m !>(~))
:: Else, add group then join
;< ~ bind:m

View File

@ -0,0 +1,61 @@
/- spider, graph-view, graph=graph-store, *metadata-store, *group
/+ strandio, resource
=>
|%
++ strand strand:spider
++ poke poke:strandio
++ poke-our poke-our:strandio
++ scry-metadata
|= rid=resource
=/ m (strand ,(unit resource))
;< pax=(unit path) bind:m
%+ scry:strandio ,(unit path)
;: weld
/gx/metadata-store/resource/graph
(en-path:resource rid)
/noun
==
(pure:m (bind pax de-path:resource))
++ scry-group
|= rid=resource
=/ m (strand ,(unit resource))
;< ugroup=(unit group) bind:m
%+ scry:strandio ,(unit group)
;: weld
/gx/group-store/resource/graph
(en-path:resource rid)
/noun
==
(pure:m (need ugroup))
++ delete-graph
|= rid=resource
=/ m (strand ,~)
;< ~ bind:m
(poke-our %graph-pull-hook %pull-hook-action [%remove rid.action])
;< ~ bind:m
(poke-our %graph-store %graph-update [%archive-graph rid.action])
(pure:m ~)
--
^- thread:spider
|= arg=vase
=/ m (strand ,vase)
^- form:m
=+ !<([=action:graph-view ~] arg)
?> ?=(%leave -.action)
;< =bowl:spider bind:m get-bowl:strandio
?< =(our.bowl entity.rid.action)
;< ugroup-rid=(unit resource) bind:m
(scry-metadata rid.action)
?~ ugroup-rid (fail:m %nonexistent)
;< ugroup=(unit group)
(scry-group u.ugroup-rid)
?~ ugroup (fail:m %nonexistent)
?. hidden.u.ugroup
(delete-graph rid.action)
;< ~ bind:m
(poke-our %group-push-hook %pull-hook-action [%remove rid.action])
;< ~ bind:m
(poke-our %group-store %group-action !>([%remove-group rid.action])
;< ~ bind:m (delete-graph rid.action)
(pure:m !>(~))