╭ changed ─────────╮ │src/event/Repo.zig│ ╰──────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │106 - // each user's repos are a set ordered by creation time (oldest first), so │ │136 + // each user's repos are a set ordered by creation time (newest first), so │ │137 // the user page paginates them the same way the home repos list does. │ │138 const user_repos_cursor = try user_id_to_repo_id_set.putCursor(hash.hashInt(hash_kind, event.user_id));│ │139 const user_repos = try DB.SortedSet(.read_write).init(user_repos_cursor); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────╮ │110 - const user_repo_order_key = evt.orderKey(event_to_write.created_ts, event_id); │ │140 + const user_repo_order_key = evt.orderKeyDesc(event_to_write.created_ts, event_id);│ │141 try user_repos.put(&user_repo_order_key); │ │142 } else { │ │143 if (try event_id_to_repo.getCursor(repo_key)) |existing_repo_cursor| { │ ╰───────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │144 const existing_repo = try DB.HashMap(.read_only).init(existing_repo_cursor); │ │145 const existing_repo_event = try evt.read(@This(), DB, hash_kind, arena, existing_repo); │ │146 │ │117 - const existing_path = try std.fmt.allocPrint(arena.allocator(), "{s}/{s}", .{ existing_repo_event.user_id, existing_repo_event.name });│ │147 + const existing_path = try existing_repo_event.indexKey(arena.allocator()); │ │148 _ = try name_to_repo_id.remove(hash.hashInt(hash_kind, existing_path)); │ │149 │ │150 // drop it from the ordered set using its recorded creation timestamp │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │151 const repo_id_set_cursor = try haxy_moment.putCursor(hash.hashInt(hash_kind, "repo-id-set")); │ │152 const repo_id_set = try DB.SortedSet(.read_write).init(repo_id_set_cursor); │ │123 - const order_key = evt.orderKey(existing_repo_event.created_ts, event_id); │ │153 + const order_key = evt.orderKeyDesc(existing_repo_event.created_ts, event_id); │ │154 _ = try repo_id_set.remove(&order_key); │ │155 │ │156 const user_id_to_repo_id_set_cursor = try haxy_moment.putCursor(hash.hashInt(hash_kind, "user-id->repo-id-set"));│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────╮ │160 const user_repos_cursor = try user_id_to_repo_id_set.putCursor(user_key);│ │161 const user_repos = try DB.SortedSet(.read_write).init(user_repos_cursor);│ │162 _ = try user_repos.remove(&order_key); │ │163 + │ │164 + _ = try conflicts.remove(&order_key); │ │165 + _ = try repo_id_to_field_to_oid.remove(repo_key); │ │166 } │ │167 if (!try event_id_to_repo.remove(repo_key)) return error.EventNotFound; │ │168 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │194 _ = try user_id_cursor.readBytes(&user_id); │ │195 │ │196 // "user-id/repo-name" -> repo event id │ │164 - const repo_path = try std.fmt.allocPrint(arena.allocator(), "{s}/{s}", .{ user_id[0..], repo_name }); │ │197 + const repo_path = try (Self{ .user_id = user_id[0..], .name = repo_name, .description = "" }).indexKey(arena.allocator());│ │198 const name_to_repo_id_cursor = try haxy_moment.getCursor(hash.hashInt(hash_kind, "name->repo-id")) orelse return null; │ │199 const name_to_repo_id = try DB.HashMap(.read_only).init(name_to_repo_id_cursor); │ │200 const repo_id_cursor = try name_to_repo_id.getCursor(hash.hashInt(hash_kind, repo_path)) orelse return null; │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯