╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ──────────╮ │src/event/Patch.zig│ ╰───────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │175 existing_maybe = try evt.read(Record, DB, hash_kind, arena, try DB.HashMap(.read_only).init(cursor)); │ │176 } │ │177 │ │177 - var record = if (record_maybe) |value| │ │178 - value │ │179 - else blk: { │ │180 - var value = existing_maybe orelse return error.EventNotFound; │ │181 - value.removed = true; │ │182 - break :blk value; │ │183 - }; │ │178 + var record = record_maybe orelse try evt.removedRecord(Record, DB, hash_kind, haxy_moment.readOnly(), existing_maybe);│ │179 │ │180 if (!fieldsValid(record.event.title, record.event.tags)) return error.InvalidPatch; │ │181 if (!rf.validateName(record.event.target_branch)) return error.InvalidTarget; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │242 │ │243 const cursor = try records.putCursor(record_key); │ │244 try evt.upsert(Record, DB, hash_kind, try DB.HashMap(.read_write).init(cursor), record); │ │250 - try evt.indexEvent(DB, hash_kind, haxy_moment, event_id, .patch, record.created_order, record.removed); │ │245 + try evt.indexEvent(DB, hash_kind, haxy_moment, event_id, .patch, existing_maybe, record); │ │246 │ │247 if (existing_cursor_maybe == null) { │ │248 const ids = try DB.SortedSet(.read_write).init(try haxy_moment.putCursor(hash.hashInt(hash_kind, id_set_key)));│ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────────╮ │src/event/PatchRev.zig│ ╰──────────────────────╯ ╭─────────────────────────────────────────╮ │14 removed: bool = false, │ │15 author_email: ?[]const u8 = null,│ │16 created_order: u64 = 0, │ │17 + updated_order: u64 = 0, │ │18 event_oid: []const u8, │ │19 base_tree_oid: []const u8, │ │20 head_tree_oid: []const u8, │ ╰─────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │106 existing_maybe = try evt.read(Record, DB, hash_kind, arena, try DB.HashMap(.read_only).init(cursor)); │ │107 } │ │108 │ │108 - var record = if (record_maybe) |value| │ │109 - value │ │110 - else blk: { │ │111 - var value = existing_maybe orelse return error.EventNotFound; │ │112 - value.removed = true; │ │113 - break :blk value; │ │114 - }; │ │109 + var record = record_maybe orelse try evt.removedRecord(Record, DB, hash_kind, haxy_moment.readOnly(), existing_maybe);│ │110 │ │111 try validateOid(hash_kind, record.event.base_oid); │ │112 try validateOid(hash_kind, record.event.source_oid); │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │132 │ │133 const cursor = try records.putCursor(record_key); │ │134 try evt.upsert(Record, DB, hash_kind, try DB.HashMap(.read_write).init(cursor), record); │ │140 - try evt.indexEvent(DB, hash_kind, haxy_moment, event_id, .patchrev, record.created_order, record.removed); │ │135 + try evt.indexEvent(DB, hash_kind, haxy_moment, event_id, .patchrev, existing_maybe, record); │ │136 │ │137 if (existing_cursor_maybe == null) { │ │138 const ids = try DB.SortedSet(.read_write).init(try haxy_moment.putCursor(hash.hashInt(hash_kind, id_set_key)));│ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────╮ │src/event/Repo.zig│ ╰──────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────╮ │16 event: Self, │ │17 removed: bool = false, │ │18 created_order: u64 = 0, │ │19 + updated_order: u64 = 0, │ │20 │ │21 // a repo's key in the name index. it's unique per owner, so the read side│ │22 // resolves the url's username to its user id first. │ ╰──────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │80 existing_record_maybe = try evt.read(Record, DB, hash_kind, arena, existing_repo); │ │81 } │ │82 │ │82 - var record_to_write = if (record_maybe) |record| │ │83 - record │ │84 - else blk: { │ │85 - var record = existing_record_maybe orelse return error.EventNotFound; │ │86 - record.removed = true; │ │87 - break :blk record; │ │88 - }; │ │83 + var record_to_write = record_maybe orelse try evt.removedRecord(Record, DB, hash_kind, haxy_moment.readOnly(), existing_record_maybe);│ │84 │ │85 if (!record_to_write.removed) { │ │86 try validateName(record_to_write.event.name); │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │110 const repo_cursor = try event_id_to_repo.putCursor(repo_key); │ │111 const repo = try DB.HashMap(.read_write).init(repo_cursor); │ │112 try evt.upsert(Record, DB, hash_kind, repo, record_to_write); │ │118 - try evt.indexEvent(DB, hash_kind, haxy_moment, event_id, .repo, record_to_write.created_order, record_to_write.removed);│ │113 + try evt.indexEvent(DB, hash_kind, haxy_moment, event_id, .repo, existing_record_maybe, record_to_write); │ │114 │ │115 const order_key = evt.orderKeyDesc(record_to_write.created_order, event_id); │ │116 │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ─────────╮ │src/event/User.zig│ ╰──────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────╮ │16 event: Self, │ │17 removed: bool = false, │ │18 created_order: u64 = 0, │ │19 + updated_order: u64 = 0, │ │20 │ │21 // a user's key in the name index │ │22 pub fn indexKey(self: Record, allocator: std.mem.Allocator) ![]const u8 {│ ╰─────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │87 existing_record_maybe = try evt.read(Record, DB, hash_kind, arena, existing_user); │ │88 } │ │89 │ │89 - var record_to_write = if (record_maybe) |record| │ │90 - record │ │91 - else blk: { │ │92 - var record = existing_record_maybe orelse return error.EventNotFound; │ │93 - record.removed = true; │ │94 - break :blk record; │ │95 - }; │ │90 + var record_to_write = record_maybe orelse try evt.removedRecord(Record, DB, hash_kind, haxy_moment.readOnly(), existing_record_maybe);│ │91 │ │92 if (!record_to_write.removed) try validateName(record_to_write.event.name); │ │93 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯