Skip to content

Instantly share code, notes, and snippets.

@mccraigmccraig
Created March 22, 2018 15:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mccraigmccraig/ff1b7fc16eef3a37d1f0d6770fdae9c0 to your computer and use it in GitHub Desktop.
Save mccraigmccraig/ff1b7fc16eef3a37d1f0d6770fdae9c0 to your computer and use it in GitHub Desktop.
(defn denorm-groups-to-member-groups-s
"denorms from groups to the group side of member-groups"
[cassandra org-id]
(ddo [g-s (m/select-buffered
cassandra
g.ent/RawGroups
[:org_id]
[org-id]
{:from :groups_full_by_id
:order-by [[:id :asc]]})
mg-s (m/select-buffered
cassandra
g.ent/MemberGroups
[:org_id]
[org-id]
{:from :group_members_by_group_id
:order-by [[:group_id :asc]]})
change-s
(cross/inner-join-streams
{:key-compare-fn cass.uuid/-compare
:skey-streams {:group g-ss
:member-group mg-ss}
:finish-merge-fn (fn [{g :group mg :member-group}]
[mg
(when (and g (not (:disabled g)))
(denorm/denormalize-fields-to-target
g.ent/RawGroups
g.ent/MemberGroups
g
mg))])})
change-r-s (m/change-buffered
cassandra
g.ent/MemberGroups
change-s)]
(stream/reduce (fn [c _] (inc c)) 0 change-r-s)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment