╭ changed ────╮ │src/event.zig│ ╰─────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1006 } │ │1007 │ │1008 // the event id embedded in a set entry's order key │ │1009 -fn readOrderKeyId(comptime DB: type, kv_pair_cursor: DB.Cursor(.read_only)) ![event_id_size]u8 { │ │1009 +pub fn readOrderKeyId(comptime DB: type, kv_pair_cursor: DB.Cursor(.read_only)) ![event_id_size]u8 {│ │1010 var cursor = kv_pair_cursor; │ │1011 const kv_pair = try cursor.readKeyValuePair(); │ │1012 var order_key: [@sizeOf(u64) + event_id_size]u8 = undefined; │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────╮ │src/event/User.zig│ ╰──────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │156 │ │157 if (!try event_id_to_user.remove(user_key)) return error.EventNotFound; │ │158 │ │159 + // the user's repos go with them: the repo name index is keyed by owner │ │160 + // id, so one left behind is listed but can never be resolved again │ │161 const user_id_to_repo_id_set_cursor = try haxy_moment.putCursor(hash.hashInt(hash_kind, "user-id->repo-id-set"));│ │162 const user_id_to_repo_id_set = try DB.HashMap(.read_write).init(user_id_to_repo_id_set_cursor); │ │163 + if (try user_id_to_repo_id_set.getCursor(user_key)) |user_repos_cursor| { │ │164 + const user_repos = try DB.SortedSet(.read_only).init(user_repos_cursor); │ │165 + │ │166 + // collected up front, since deleting a repo removes it from this set │ │167 + var repo_ids: std.ArrayList([evt.event_id_size]u8) = .empty; │ │168 + var repo_iter = try user_repos.iteratorFromIndex(0); │ │169 + while (try repo_iter.next()) |kv_pair_cursor| { │ │170 + try repo_ids.append(arena.allocator(), try evt.readOrderKeyId(DB, kv_pair_cursor)); │ │171 + } │ │172 + │ │173 + for (repo_ids.items) |*repo_id| { │ │174 + try evt.Repo.consume(DB, hash_kind, haxy_moment, repo_id, null, arena, event_oid); │ │175 + } │ │176 + } │ │177 _ = try user_id_to_repo_id_set.remove(user_key); │ │178 } │ │179 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯