From 79fe01a434031f5271c99d9012d054dd8f9203dd Mon Sep 17 00:00:00 2001 From: Logan Allen Date: Mon, 26 Apr 2021 13:28:13 -0500 Subject: [PATCH] graph-store/push-hook: remove old mark warming, organize --- pkg/arvo/app/graph-push-hook.hoon | 100 ++++++++++++------------------ pkg/arvo/app/graph-store.hoon | 1 + pkg/arvo/lib/graph-store.hoon | 4 +- pkg/arvo/sur/graph-store.hoon | 2 +- 4 files changed, 45 insertions(+), 62 deletions(-) diff --git a/pkg/arvo/app/graph-push-hook.hoon b/pkg/arvo/app/graph-push-hook.hoon index ff4d0da93..62290f44d 100644 --- a/pkg/arvo/app/graph-push-hook.hoon +++ b/pkg/arvo/app/graph-push-hook.hoon @@ -19,9 +19,12 @@ :: +$ state-null ~ +$ state-zero [%0 marks=(set mark)] ++$ state-one [%1 ~] +$ versioned-state $@ state-null - state-zero + $% state-zero + state-one + == -- :: %- agent:dbug @@ -30,13 +33,14 @@ %- (agent:push-hook config) ^- agent =- -=| state-zero +=| state-one =* state - |_ =bowl:gall +* this . def ~(. (default-agent this %|) bowl) grp ~(. group bowl) gra ~(. graph bowl) + met ~(. mdl bowl) hc ~(. hook-core bowl) :: ++ on-init on-init:def @@ -46,7 +50,9 @@ =+ !<(old=versioned-state vase) =? old ?=(~ old) [%0 ~] - ?> ?=(%0 -.old) + =? old ?=(%0 -.old) + [%1 ~] + ?> ?=(%1 -.old) `this(state old) :: ++ on-poke on-poke:def @@ -58,17 +64,10 @@ |= [=wire =sign-arvo] ^- (quip card _this) ?+ wire (on-arvo:def wire sign-arvo) + :: XX: no longer necessary :: - [%perms @ @ ~] - ?> ?=(?(%add %remove) i.t.t.wire) - =* mark i.t.wire - :_ this - (build-permissions:hc mark i.t.t.wire %next)^~ - :: - [%transform-add @ ~] - =* mark i.t.wire - :_ this - (build-transform-add:hc mark %next)^~ + [%perms @ @ ~] [~ this] + [%transform-add @ ~] [~ this] == :: ++ on-fail on-fail:def @@ -175,7 +174,8 @@ ++ initial-watch |= [=path =resource:res] ^- vase - ?> (is-allowed:hc resource) + |^ + ?> (is-allowed resource) !> ^- update:store ?~ path :: new subscribe @@ -188,22 +188,19 @@ =/ =time (slav %da i.path) =/ =update-log:store (get-update-log-subset:gra resource time) [now.bowl [%run-updates resource update-log]] + :: + ++ is-allowed + |= =resource:res + =/ group-res=resource:res + (need (peek-group:met %graph resource)) + (is-member:grp src.bowl group-res) + -- :: ++ take-update |= =vase ^- [(list card) agent] =/ =update:store !<(update:store vase) ?+ -.q.update [~ this] - %add-graph - ?~ mark.q.update `this - =* mark u.mark.q.update - ?: (~(has in marks) mark) `this - :_ this(marks (~(put in marks) mark)) - :~ (build-permissions:hc mark %add %sing) - (build-permissions:hc mark %remove %sing) - (build-transform-add:hc mark %sing) - == - :: %remove-graph :_ this [%give %kick ~[resource+(en-path:res resource.q.update)] ~]~ @@ -213,6 +210,7 @@ [%give %kick ~[resource+(en-path:res resource.q.update)] ~]~ == -- +:: ^| ^= hook-core |_ =bowl:gall +* grp ~(. group bowl) @@ -225,28 +223,22 @@ /[care]/(scot %p our.bowl)/[desk]/(scot %da now.bowl) path :: -++ perm-mark-name - |= perm=@t - ^- @t - (cat 3 'graph-permissions-' perm) -:: ++ perm-mark |= [=resource:res perm=@t vip=vip-metadata:metadata =indexed-post:store] ^- permissions:store + |^ =- (check vip) !< check=$-(vip-metadata:metadata permissions:store) %. !>(indexed-post) =/ mark (get-mark:gra resource) ?~ mark |=(=vase !>([%no %no %no])) .^(tube:clay (scry %cc %home /[u.mark]/(perm-mark-name perm))) -:: -++ add-mark - |= [=resource:res vip=vip-metadata:metadata =indexed-post:store] - (perm-mark resource %add vip indexed-post) -:: -++ remove-mark - |= [=resource:res vip=vip-metadata:metadata =indexed-post:store] - (perm-mark resource %remove vip indexed-post) + :: + ++ perm-mark-name + |= perm=@t + ^- @t + (cat 3 'graph-permissions-' perm) + -- :: ++ get-permission |= [=permissions:store is-admin=? writers=(set ship)] @@ -259,12 +251,6 @@ writer.permissions reader.permissions :: -++ is-allowed - |= =resource:res - =/ group-res=resource:res - (need (peek-group:met %graph resource)) - (is-member:grp src.bowl group-res) -:: ++ get-roles-writers-variation |= =resource:res ^- (unit [is-admin=? writers=(set ship) vip=vip-metadata:metadata]) @@ -290,6 +276,7 @@ ++ is-allowed-add |= [=resource:res nodes=(map index:store node:store)] ^- ? + |^ %- (bond |.(%.n)) %+ biff (get-roles-writers-variation resource) |= [is-admin=? writers=(set ship) vip=vip-metadata:metadata] @@ -320,10 +307,16 @@ %.n =(author.p.post.parent-node src.bowl) == + :: + ++ add-mark + |= [=resource:res vip=vip-metadata:metadata =indexed-post:store] + (perm-mark resource %add vip indexed-post) + -- :: ++ is-allowed-remove |= [=resource:res indices=(set index:store)] ^- ? + |^ %- (bond |.(%.n)) %+ biff (get-roles-writers-variation resource) |= [is-admin=? writers=(set ship) vip=vip-metadata:metadata] @@ -344,21 +337,10 @@ %no %.n %self =(author.p.post.node src.bowl) == -:: -++ build-permissions - |= [=mark kind=?(%add %remove) mode=?(%sing %next)] - ^- card - =/ =wire /perms/[mark]/[kind] - =/ =mood:clay [%c da+now.bowl /[mark]/(perm-mark-name kind)] - =/ =rave:clay ?:(?=(%sing mode) [mode mood] [mode mood]) - [%pass wire %arvo %c %warp our.bowl %home `rave] -:: -++ build-transform-add - |= [=mark mode=?(%sing %next)] - ^- card - =/ =wire /transform-add/[mark] - =/ =mood:clay [%c da+now.bowl /[mark]/transform-add-nodes] - =/ =rave:clay ?:(?=(%sing mode) [mode mood] [mode mood]) - [%pass wire %arvo %c %warp our.bowl %home `rave] + :: + ++ remove-mark + |= [=resource:res vip=vip-metadata:metadata =indexed-post:store] + (perm-mark resource %remove vip indexed-post) + -- -- diff --git a/pkg/arvo/app/graph-store.hoon b/pkg/arvo/app/graph-store.hoon index 4f7f74b31..afbf4e848 100644 --- a/pkg/arvo/app/graph-store.hoon +++ b/pkg/arvo/app/graph-store.hoon @@ -84,6 +84,7 @@ graphs.old (~(run by graphs.old) marked-graph-to-two:upg) archive.old (~(run by archive.old) marked-graph-to-two:upg) tag-queries.old *tag-queries:store + validators.old ~ :: update-logs.old %- ~(run by update-logs.old) diff --git a/pkg/arvo/lib/graph-store.hoon b/pkg/arvo/lib/graph-store.hoon index 31577aec4..426bcd4fc 100644 --- a/pkg/arvo/lib/graph-store.hoon +++ b/pkg/arvo/lib/graph-store.hoon @@ -738,7 +738,7 @@ tag-queries=(tree [term (tree uid)]) update-logs=tree-update-logs archive=tree-graphs - validators=(tree ^mark) + ~ == +$ tree-graphs (tree [resource tree-marked-graph]) +$ tree-marked-graph [p=tree-graph q=(unit ^mark)] @@ -779,7 +779,7 @@ (remake-jug:migrate tag-queries.t) (remake-update-logs update-logs.t) (remake-graphs archive.t) - (remake-set:migrate validators.t) + ~ == :: ++ remake-graphs diff --git a/pkg/arvo/sur/graph-store.hoon b/pkg/arvo/sur/graph-store.hoon index ccb09f891..2217038f0 100644 --- a/pkg/arvo/sur/graph-store.hoon +++ b/pkg/arvo/sur/graph-store.hoon @@ -23,7 +23,7 @@ =tag-queries =update-logs archive=graphs - validators=(set mark) + ~ == :: +$ update [p=time q=action]