╭──────────╮ │← previous│ ╰──────────╯ ╭ changed ─────────╮ │src/test/event.zig│ ╰──────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────╮ │1110 // this event edits the previous one because it has the same id│ │1111 .{ │ │1112 .id = std.fmt.bytesToHex(user_event_id, .lower), │ │1113 + .author_email = author_email, │ │1114 .event = .{ │ │1115 .user = .{ │ │1116 .name = "alice", │ ╰─────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────╮ │1122 }, │ │1123 .{ │ │1124 .id = std.fmt.bytesToHex(repo_event_id, .lower),│ │1125 + .author_email = author_email, │ │1126 .event = .{ │ │1127 .repo = .{ │ │1128 .user_id = &user_event_id, │ ╰──────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────╮ │1184 const events_to_consume2 = [_]evt.EventWithId{ │ │1185 .{ │ │1186 .id = std.fmt.bytesToHex(repo_event_id, .lower),│ │1187 + .author_email = author_email, │ │1188 .event = .{ .repo = null }, │ │1189 }, │ │1190 }; │ ╰──────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────╮ │1219 const events_to_consume3 = [_]evt.EventWithId{ │ │1220 .{ │ │1221 .id = std.fmt.bytesToHex(user_event_id, .lower),│ │1222 + .author_email = author_email, │ │1223 .event = .{ .user = null }, │ │1224 }, │ │1225 }; │ ╰──────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1298 // one user, then four repos, each with its own creation timestamp (user@100, │ │1299 // repos@101..104) │ │1300 const events = [_]evt.EventWithId{ │ │1281 - .{ .id = std.fmt.bytesToHex(user_id, .lower), .timestamp = 100, .event = .{ .user = .{ .name = "alice", .display_name = "Alice", .email = "alice@example.test", .password_hash = pw } } }, │ │1282 - .{ .id = std.fmt.bytesToHex(repo_ids[0], .lower), .timestamp = 101, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo0", .description = "d0" } } }, │ │1283 - .{ .id = std.fmt.bytesToHex(repo_ids[1], .lower), .timestamp = 102, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo1", .description = "d1" } } }, │ │1284 - .{ .id = std.fmt.bytesToHex(repo_ids[2], .lower), .timestamp = 103, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo2", .description = "d2" } } }, │ │1285 - .{ .id = std.fmt.bytesToHex(repo_ids[3], .lower), .timestamp = 104, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo3", .description = "d3" } } }, │ │1301 + .{ .id = std.fmt.bytesToHex(user_id, .lower), .author_email = author_email, .timestamp = 100, .event = .{ .user = .{ .name = "alice", .display_name = "Alice", .email = "alice@example.test", .password_hash = pw } } },│ │1302 + .{ .id = std.fmt.bytesToHex(repo_ids[0], .lower), .author_email = author_email, .timestamp = 101, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo0", .description = "d0" } } }, │ │1303 + .{ .id = std.fmt.bytesToHex(repo_ids[1], .lower), .author_email = author_email, .timestamp = 102, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo1", .description = "d1" } } }, │ │1304 + .{ .id = std.fmt.bytesToHex(repo_ids[2], .lower), .author_email = author_email, .timestamp = 103, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo2", .description = "d2" } } }, │ │1305 + .{ .id = std.fmt.bytesToHex(repo_ids[3], .lower), .author_email = author_email, .timestamp = 104, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo3", .description = "d3" } } }, │ │1306 }; │ │1307 try evt.consume(.xit, repo_opts, io, allocator, &repo, evt.events_ref, &events); │ │1308 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1318 │ │1319 // delete repo1 -> dense order (no tombstone) │ │1320 try evt.consume(.xit, repo_opts, io, allocator, &repo, evt.events_ref, &[_]evt.EventWithId{ │ │1301 - .{ .id = std.fmt.bytesToHex(repo_ids[1], .lower), .timestamp = 200, .event = .{ .repo = null } }, │ │1321 + .{ .id = std.fmt.bytesToHex(repo_ids[1], .lower), .author_email = author_email, .timestamp = 200, .event = .{ .repo = null } },│ │1322 }); │ │1323 { │ │1324 const moment = try evt.currentMoment(repo_opts, &repo); │ ╰─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1327 │ │1328 // update repo0 at a later timestamp -> keeps its original place │ │1329 try evt.consume(.xit, repo_opts, io, allocator, &repo, evt.events_ref, &[_]evt.EventWithId{ │ │1310 - .{ .id = std.fmt.bytesToHex(repo_ids[0], .lower), .timestamp = 300, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo0", .description = "updated" } } }, │ │1330 + .{ .id = std.fmt.bytesToHex(repo_ids[0], .lower), .author_email = author_email, .timestamp = 300, .event = .{ .repo = .{ .user_id = &user_id, .name = "repo0", .description = "updated" } } },│ │1331 }); │ │1332 { │ │1333 const moment = try evt.currentMoment(repo_opts, &repo); │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭ changed ──╮ │src/try.zig│ ╰───────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────╮ │175 .id = std.fmt.bytesToHex(user_ids[i], .lower), │ │176 // stepped timestamps so the seeded users/repos list in a stable order│ │177 .timestamp = @intCast(slot + 1), │ │178 + .author_email = "admin@haxy", │ │179 .event = .{ │ │180 .user = .{ │ │181 .name = u.name, │ ╰───────────────────────────────────────────────────────────────────────────────────────────╯ ╭─────────────────────────────────────────────────────────────────────────╮ │191 events_to_consume[user_data.len + i] = .{ │ │192 .id = std.fmt.bytesToHex(repo_event_ids[i], .lower),│ │193 .timestamp = @intCast(user_data.len + i + 1), │ │194 + .author_email = user_data[r.user_index].email, │ │195 .event = .{ │ │196 .repo = .{ │ │197 .user_id = &user_ids[r.user_index], │ ╰─────────────────────────────────────────────────────────────────────────╯ ╭───────────────────────────────────────────────────────────────────────────────────────────────────╮ │532 .id = std.fmt.bytesToHex(evt.EventWithId.randomId(prng.random()), .lower),│ │533 // stepped timestamps so the issues list in a stable order │ │534 .timestamp = @intCast(i + 1), │ │535 + .author_email = user_data[i % user_data.len].email, │ │536 .event = .{ │ │537 .issue = .{ │ │538 .title = issue.title, │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────╮ │next →│ ╰──────╯