╭ changed ───────╮ │src/test/net.zig│ ╰────────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │529 │ │530 const admin_path = try std.fs.path.join(allocator, &.{ temp_path, "admin" });│ │531 defer allocator.free(admin_path); │ │532 - const repos_dir = try std.fs.path.join(allocator, &.{ temp_path, "repos" }); │ │533 - defer allocator.free(repos_dir); │ │532 + const users_dir = try std.fs.path.join(allocator, &.{ temp_path, "users" }); │ │533 + defer allocator.free(users_dir); │ │534 │ │535 var prng = std.Random.DefaultPrng.init(std.testing.random_seed); │ │536 const fork_id = evt.EventWithId.randomId(prng.random()); │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │543 var arena = std.heap.ArenaAllocator.init(allocator); │ │544 defer arena.deinit(); │ │545 const moment = try evt.currentMoment(evt.admin_repo_opts, &admin); │ │546 - const target = (try evt.readRepoByOwnerAndName(io, allocator, &arena, moment, repos_dir, "admin", "target")) orelse return error.NotFound;│ │546 + const target = (try evt.readRepoByOwnerAndName(io, allocator, &arena, moment, users_dir, "admin", "target")) orelse return error.NotFound;│ │547 repo_id = target.event_id; │ │548 @memcpy(&user_id, target.repo.event.user_id); │ │549 - var user_repo = (try evt.openUserRepo(io, allocator, repos_dir, &user_id)) orelse return error.NotFound; │ │549 + var user_repo = (try evt.openUserRepo(io, allocator, users_dir, &user_id)) orelse return error.NotFound; │ │550 defer user_repo.deinit(io, allocator); │ │551 - break :blk try fork.create(repo_opts, io, allocator, repos_dir, &user_repo, .{ │ │551 + break :blk try fork.create(repo_opts, io, allocator, users_dir, .{ │ │552 .id = fork_id_hex, │ │553 .user_id = user_id, │ │554 .repo_id = repo_id, │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │618 { │ │619 var admin = try rp.Repo(.xit, evt.admin_repo_opts).open(io, allocator, .{ .path = admin_path }); │ │620 defer admin.deinit(io, allocator); │ │621 - var user_repo = (try evt.openUserRepo(io, allocator, repos_dir, &user_id)) orelse return error.NotFound;│ │621 + var user_repo = (try evt.openUserRepo(io, allocator, users_dir, &user_id)) orelse return error.NotFound;│ │622 defer user_repo.deinit(io, allocator); │ │623 var target = try rp.Repo(.xit, repo_opts).open(io, allocator, .{ .path = target_path }); │ │624 defer target.deinit(io, allocator); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │626 try std.testing.expectError(error.NotFound, evt.currentMoment(repo_opts, &target)); │ │627 try std.testing.expectEqual(null, try (try target.core.latestMoment()).getCursor(hash.hashInt(hash_kind, evt.Patch.patch_id_to_mergeability_key)));│ │628 try target.addBranch(io, .{ .name = "feature" }); │ │629 - try pch.publish(repo_opts, io, allocator, &admin, &user_repo, &target, draft_path, .{ │ │629 + try pch.publish(repo_opts, io, allocator, users_dir, &admin, &target, .{ │ │630 .id = fork_id_hex, │ │631 .user_id = user_id, │ │632 .repo_id = repo_id, │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │796 // │ │797 │ │798 { │ │799 - var user_repo = (try evt.openUserRepo(io, allocator, repos_dir, &user_id)) orelse return error.NotFound; │ │799 + var user_repo = (try evt.openUserRepo(io, allocator, users_dir, &user_id)) orelse return error.NotFound; │ │800 defer user_repo.deinit(io, allocator); │ │801 try evt.remove(.server, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, &repo_id, .repo, .{ .name = "admin", .email = "admin@example.test" });│ │802 } │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │815 try std.testing.expectEqualStrings(&third_source_oid, &(try fork_clone.readRef(io, fork.ref) orelse return error.NotFound));│ │816 │ │817 { │ │818 - var user_repo = (try evt.openUserRepo(io, allocator, repos_dir, &user_id)) orelse return error.NotFound; │ │818 + var user_repo = (try evt.openUserRepo(io, allocator, users_dir, &user_id)) orelse return error.NotFound; │ │819 defer user_repo.deinit(io, allocator); │ │820 try evt.consume(.server, .user, .xit, evt.user_repo_opts, io, allocator, &user_repo, evt.events_ref, &.{ │ │821 .{ │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │1653 } }, │ │1654 }}); │ │1655 │ │1656 - const repos_dir = try std.fs.path.join(allocator, &.{ data_path, "repos" });│ │1657 - defer allocator.free(repos_dir); │ │1658 - const user_repo_path = try evt.userRepoPath(allocator, repos_dir, &user_id);│ │1656 + const users_dir = try std.fs.path.join(allocator, &.{ data_path, "users" });│ │1657 + defer allocator.free(users_dir); │ │1658 + const user_repo_path = try evt.userRepoPath(allocator, users_dir, &user_id);│ │1659 defer allocator.free(user_repo_path); │ │1660 var user_repo = try evt.initUserRepo(io, allocator, user_repo_path); │ │1661 defer user_repo.deinit(io, allocator); │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────╮ │1662 } │ │1663 │ │1664 -// resolve admin/<repo_name> to its on-disk directory under <data_dir>/repos via│ │1664 +// resolve admin/<repo_name> to its on-disk directory under <data_dir>/users via│ │1665 // the event store │ │1666 fn repoOnDiskPath( │ │1667 io: std.Io, │ ╰──────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────╮ │1672 ) !?[]u8 { │ │1673 const admin_repo_path = try std.fs.path.join(allocator, &.{ data_path, "admin" });│ │1674 defer allocator.free(admin_repo_path); │ │1675 + const users_dir = try std.fs.path.join(allocator, &.{ data_path, "users" }); │ │1676 + defer allocator.free(users_dir); │ │1677 │ │1676 - const event_id_hex = (try evt.resolveOrCreateRepo( │ │1678 + const location = (try evt.resolveOrCreateRepo( │ │1679 io, │ │1680 allocator, │ │1681 + users_dir, │ │1682 admin_repo_path, │ │1683 "admin", │ │1684 repo_name, │ ╰────────────────────────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────╮ │1685 if (create) .{ .read_access = .public } else null, │ │1686 )) orelse return null; │ │1684 - return try std.fs.path.join(allocator, &.{ data_path, "repos", &event_id_hex }); │ │1687 + return try evt.repoPath(allocator, users_dir, &location.owner_id, &location.repo_id);│ │1688 } │ │1689 │ │1690 // build the remote URL addressing admin/<repo_name> over the given transport │ ╰───────────────────────────────────────────────────────────────────────────────────────────────╯