╭ changed ────╮ │src/event.zig│ ╰─────────────╯ ╭───────────╮ │← all files│ ╰───────────╯ ╭──────────╮ │← previous│ ╰──────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1145 inline for (struct_info.fields) |field| { │ │1118 - if (comptime std.mem.eql(u8, field.name, "created_ts")) continue; │ │1146 + if (comptime derivedField(field.name)) continue; │ │1147 if (!fieldEqual(field.type, @field(a, field.name), @field(b, field.name))) return false;│ │1148 } │ │1149 }, │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ ╭──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │1302 try map.put(key, .{ .bytes_object = .{ .value = bytes, .format_tag = "bl".* } }); │ │1303 }, │ │1304 .@"enum" => try upsertBytes(DB, hash_kind, map, key, @tagName(value)), │ │1305 + .optional => |optional_info| { │ │1306 + if (optional_info.child != []const u8) @compileError("unsupported upsert field type: " ++ @typeName(Field));│ │1307 + // a missing key is null │ │1308 + if (value) |bytes| { │ │1309 + try upsertBytes(DB, hash_kind, map, key, bytes); │ │1310 + } else { │ │1311 + _ = try map.remove(key); │ │1312 + } │ │1313 + }, │ │1314 else => @compileError("unsupported upsert field type: " ++ @typeName(Field)), │ │1315 } │ │1316 } │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯